Browse Source

修改

dev_kxc
xzt 12 months ago
parent
commit
66be2be002
  1. 53
      jwtech-admin-page/src/api/build/plan.js
  2. 53
      jwtech-admin-page/src/api/build/progressInfo.js
  3. 53
      jwtech-admin-page/src/api/build/publicity.js
  4. 54
      jwtech-admin-page/src/components/autoImg/index.vue
  5. 192
      jwtech-admin-page/src/views/building/projectInfo/index.vue
  6. 92
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/baseMsg.vue
  7. 53
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/index.vue
  8. 2
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/QualityBond.vue
  9. 112
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/alterPage.vue
  10. 24
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/basePage.vue
  11. 119
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/examinePage.vue
  12. 2
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/performanceBond.vue
  13. 3
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue
  14. 9
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/peasantWorkerSystem/index.vue
  15. 450
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/peasantWorkerSystem/options/rightsProtectionNoticeBoard.vue
  16. 28
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/index.vue
  17. 975
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/annualPlanManagement.vue
  18. 1342
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/completionOfInvestment.vue
  19. 1331
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/progressFilling.vue
  20. 619
      jwtech-admin-page/src/views/project/preDesign/index.vue
  21. 2
      jwtech-admin-page/src/views/project/proposal/index.vue
  22. 26
      jwtech-admin-page/src/views/project/report/index.vue

53
jwtech-admin-page/src/api/build/plan.js

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询进度计划列表
export function listPlan(query) {
return request({
url: '/progress/plan/list',
method: 'post',
data: query
})
}
// 查询进度计划详细
export function getPlan(id) {
return request({
url: '/progress/plan/' + id,
method: 'get'
})
}
// 新增进度计划
export function addPlan(data) {
return request({
url: '/progress/plan',
method: 'post',
data: data
})
}
// 修改进度计划
export function updatePlan(data) {
return request({
url: '/progress/plan',
method: 'put',
data: data
})
}
// 删除进度计划
export function delPlan(id) {
return request({
url: '/progress/plan/' + id,
method: 'delete'
})
}
// 导出进度计划
export function exportPlan(query) {
return request({
url: '/progress/plan/export',
method: 'get',
params: query
})
}

53
jwtech-admin-page/src/api/build/progressInfo.js

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询进度填报详情列表
export function listInfo(query) {
return request({
url: '/progress/info/list',
method: 'post',
data: query
})
}
// 查询进度填报详情详细
export function getInfo(id) {
return request({
url: '/progress/info/' + id,
method: 'get'
})
}
// 新增进度填报详情
export function addInfo(data) {
return request({
url: '/progress/info',
method: 'post',
data: data
})
}
// 修改进度填报详情
export function updateInfo(data) {
return request({
url: '/progress/info',
method: 'put',
data: data
})
}
// 删除进度填报详情
export function delInfo(id) {
return request({
url: '/progress/info/' + id,
method: 'delete'
})
}
// 导出进度填报详情
export function exportInfo(query) {
return request({
url: '/progress/info/export',
method: 'get',
params: query
})
}

53
jwtech-admin-page/src/api/build/publicity.js

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询维权公示牌列表
export function listPublicity(query) {
return request({
url: '/system/publicity/list',
method: 'post',
data: query
})
}
// 查询维权公示牌详细
export function getPublicity(id) {
return request({
url: '/system/publicity/' + id,
method: 'get'
})
}
// 新增维权公示牌
export function addPublicity(data) {
return request({
url: '/system/publicity',
method: 'post',
data: data
})
}
// 修改维权公示牌
export function updatePublicity(data) {
return request({
url: '/system/publicity',
method: 'put',
data: data
})
}
// 删除维权公示牌
export function delPublicity(id) {
return request({
url: '/system/publicity/' + id,
method: 'delete'
})
}
// 导出维权公示牌
export function exportPublicity(query) {
return request({
url: '/system/publicity/export',
method: 'get',
params: query
})
}

54
jwtech-admin-page/src/components/autoImg/index.vue

@ -0,0 +1,54 @@
<template>
<img ref="img" />
</template>
<script>
import { getToken } from "@/utils/auth";
export default {
name: "authImg",
props: {
authSrc: {
type: String,
required: false,
default: "",
},
},
data() {
return {
headers: "jwtech " + getToken(),
imgSrc: "",
};
},
mounted() {
//,
this.imgSrc = this.authSrc;
this.imgSrc = process.env.VUE_APP_BASE_API + this.imgSrc;
// this.imgSrc =
// (process.env.NODE_ENV == "development"
// ? "/think"
// : process.env.VUE_APP_BASE_API) + this.imgSrc;
// console.log(88888888, this.authSrc);
// console.log("99999999", this.imgSrc);
Object.defineProperty(Image.prototype, "authsrc", {
writable: true,
enumerable: true,
configurable: true,
});
let img = this.$refs.img;
let request = new XMLHttpRequest();
request.responseType = "blob";
request.open("get", this.imgSrc, true);
//
request.setRequestHeader("jianwei", this.headers);
request.onreadystatechange = (e) => {
if (request.readyState == XMLHttpRequest.DONE && request.status == 200) {
img.src = URL.createObjectURL(request.response);
img.onload = () => {
URL.revokeObjectURL(img.src);
};
}
};
request.send(null);
},
};
</script>

192
jwtech-admin-page/src/views/building/projectInfo/index.vue

@ -239,7 +239,7 @@
label="总投资金额(万元)"
align="center"
prop="total"
min-width="120"
min-width="150"
/>
<el-table-column
label="操作"
@ -300,12 +300,38 @@
label-width="180px"
label-position="top"
>
<el-col :span="24">
<el-form-item label="项目名称" prop="projectName">
<!-- <el-input
<el-col :span="12">
<el-form-item label="是否有建议书审批" prop="isApproval">
<el-select
v-model="form.isApproval"
placeholder="请选择是否有建议书审批"
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in isApprovalOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- 无建议书审批 -->
<el-form-item
label="项目名称"
prop="projectName"
v-if="form.isApproval == '0'"
>
<el-input
v-model="form.projectName"
placeholder="请输入项目名称"
/> -->
size="small"
></el-input>
</el-form-item>
<el-form-item label="项目名称" prop="projectName" v-else>
<el-select
v-model="form.projectName"
placeholder="请输入项目名称"
@ -313,6 +339,7 @@
clearable
size="small"
style="width: 100%"
:disabled="!form.isApproval"
>
<el-option
v-for="dict in projectNameOptions"
@ -324,6 +351,32 @@
</el-select>
</el-form-item>
</el-col>
<!-- 无建议书审批时选择行政区划 -->
<el-col :span="12" v-if="form.isApproval == '0'">
<el-form-item label="行政区划" prop="adcd">
<el-cascader
:options="areasOptions"
v-model="form.adcd"
:props="areasOptionProps"
placeholder="请选择行政区划"
clearable
size="small"
style="width: 100%"
@change="handleChange"
>
</el-cascader>
</el-form-item>
</el-col>
<!-- 无建议书审批时填项目编码 -->
<el-col :span="12" v-if="form.isApproval == '0'">
<el-form-item label="项目编码" prop="proCode">
<el-input
v-model="form.proCode"
placeholder="请输入项目编码"
:readonly="isEdit"
/>
</el-form-item>
</el-col>
<!-- 标绘 -->
<el-col :span="12">
<el-form-item label="项目标绘" prop="allLatitudeLongitudeList">
@ -955,8 +1008,8 @@ import {
updateInfo,
exportInfo,
} from "@/api/build/projectInfo";
// import {listProposal,getProposal,delProposal,addProposal,updateProposal,exportProposal,getProjectCode } from "@/api/earlyStage/proposal";
import { listProDesign, getProDesign } from "@/api/earlyStage/preDesign";
import { listProposal, getProposal } from "@/api/earlyStage/proposal";
// import { listProDesign, getProDesign } from "@/api/earlyStage/preDesign";
import { getAreasData } from "@/api/areas/index";
import { regionData, codeToText, TextToCode } from "element-china-area-data";
export default {
@ -1077,6 +1130,27 @@ export default {
copyForm: {},
//
rules: {
isApproval: [
{
required: true,
message: "请选择是否有建议书审批",
trigger: "blur",
},
],
proCode: [
{
required: true,
message: "请输入项目编码",
trigger: "blur",
},
],
adcd: [
{
required: true,
message: "请选择行政区划",
trigger: "blur",
},
],
projectName: [
{
required: true,
@ -1279,12 +1353,16 @@ export default {
potMsg: [],
lineMsg: [],
allDrawMsg: [],
//
isApprovalOptions: [],
isEdit: false,
};
},
created() {
this.getList();
this.getDicts("whether").then((response) => {
this.isMajorProjectOptions = response.data;
this.isApprovalOptions = response.data;
});
this.getDicts("major_project").then((response) => {
// console.log("4444444444444444", response.data);
@ -1496,9 +1574,14 @@ export default {
if (row.projectName)
return row.projectName.slice(0, row.projectName.indexOf("["));
},
//
isApprovalFormat(row, column) {
return this.selectDictLabel(this.isApprovalOptions, row.isApproval);
},
getId(res) {
// console.log(res)
getProDesign(res.id).then((response) => {
getProposal(res.id).then((response) => {
// console.log(response.data)
this.proNo = response.data.proNo;
this.proCode = response.data.projectCode;
@ -1663,7 +1746,8 @@ export default {
/** 新增按钮操作 */
handleAdd() {
this.reset();
listProDesign(this.proQueryParams).then((response) => {
this.isEdit = false;
listProposal(this.proQueryParams).then((response) => {
this.projectNameOptions = response.records;
});
this.radio = "zd";
@ -1711,55 +1795,53 @@ export default {
this.form.pointLatitudeLongitudeList = JSON.stringify(this.potMsg);
this.form.lineLatitudeLongitudeList = JSON.stringify(this.lineMsg);
this.form.allLatitudeLongitudeList = JSON.stringify(this.allDrawMsg);
console.log(
"allLatitudeLongitudeList",
this.form.allLatitudeLongitudeList
);
setTimeout(() => {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.isMajor = this.radio;
if (this.proNo) {
this.form.proNo = this.proNo;
}
if (this.proCode) {
this.form.proCode = this.proCode;
}
if (this.adcd) {
this.form.adcd = this.adcd;
}
if (
this.form.projectName &&
this.form.projectName.indexOf("[") != -1
) {
this.form.projectName = this.form.projectName.slice(
0,
this.form.projectName.indexOf("[")
);
}
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.isMajor = this.radio;
if (this.proNo) {
this.form.proNo = this.proNo;
}
if (this.proCode) {
this.form.proCode = this.proCode;
}
if (this.adcd) {
this.form.adcd = this.adcd;
}
if (
this.form.projectName &&
this.form.projectName.indexOf("[") != -1
) {
this.form.projectName = this.form.projectName.slice(
0,
this.form.projectName.indexOf("[")
);
}
console.log(this.form);
// console.log("this.form.isMajor", this.form.isMajor);
if (this.form.id != null) {
updateInfo(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addInfo(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
console.log(this.form);
// console.log("this.form.isMajor", this.form.isMajor);
if (this.form.id != null) {
updateInfo(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
if (this.form.isApproval == "0") {
// console.log("uuidv4()", uuidv4());
this.form.proNo = uuidv4();
}
addInfo(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
});
}, 10);
}
});
},
/** 删除按钮操作 */
handleDelete(row) {

92
jwtech-admin-page/src/views/building/projectInfo/projectProcess/baseMsg.vue

@ -174,12 +174,38 @@
label-width="180px"
label-position="top"
>
<el-col :span="24">
<el-form-item label="项目名称" prop="projectName">
<!-- <el-input
<el-col :span="12">
<el-form-item label="是否有建议书审批" prop="isApproval">
<el-select
v-model="form.isApproval"
placeholder="请选择是否有建议书审批"
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in isApprovalOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- 无建议书审批 -->
<el-form-item
label="项目名称"
prop="projectName"
v-if="form.isApproval == '0'"
>
<el-input
v-model="form.projectName"
placeholder="请输入项目名称"
/> -->
size="small"
></el-input>
</el-form-item>
<el-form-item label="项目名称" prop="projectName" v-else>
<el-select
v-model="form.projectName"
placeholder="请输入项目名称"
@ -187,7 +213,7 @@
clearable
size="small"
style="width: 100%"
:disabled="true"
:disabled="!form.isApproval"
>
<el-option
v-for="dict in projectNameOptions"
@ -199,9 +225,35 @@
</el-select>
</el-form-item>
</el-col>
<!-- 无建议书审批时选择行政区划 -->
<el-col :span="12" v-if="form.isApproval == '0'">
<el-form-item label="行政区划" prop="adcd">
<el-cascader
:options="areasOptions"
v-model="form.adcd"
:props="areasOptionProps"
placeholder="请选择行政区划"
clearable
size="small"
style="width: 100%"
@change="handleChange"
>
</el-cascader>
</el-form-item>
</el-col>
<!-- 无建议书审批时填项目编码 -->
<el-col :span="12" v-if="form.isApproval == '0'">
<el-form-item label="项目编码" prop="proCode">
<el-input
v-model="form.proCode"
placeholder="请输入项目编码"
:disabled="isDrawEdit"
/>
</el-form-item>
</el-col>
<!-- 标绘 -->
<el-col :span="12">
<el-form-item label="项目标绘" prop="aaa">
<el-form-item label="项目标绘" prop="allLatitudeLongitudeList">
<el-button
type="primary"
style="width: 150px"
@ -806,6 +858,27 @@ export default {
proMsg: {},
//
rules: {
isApproval: [
{
required: true,
message: "请选择是否有建议书审批",
trigger: "blur",
},
],
proCode: [
{
required: true,
message: "请输入项目编码",
trigger: "blur",
},
],
adcd: [
{
required: true,
message: "请选择行政区划",
trigger: "blur",
},
],
projectName: [
{
required: true,
@ -1005,6 +1078,8 @@ export default {
allDrawMsg: [],
//
isDrawEdit: true,
//
isApprovalOptions: [],
};
},
created() {
@ -1012,6 +1087,7 @@ export default {
this.getList();
this.getDicts("whether").then((response) => {
this.isMajorProjectOptions = response.data;
this.isApprovalOptions = response.data;
});
this.getDicts("major_project").then((response) => {
// console.log("4444444444444444", response.data);
@ -1202,6 +1278,10 @@ export default {
if (row.projectName)
return row.projectName.slice(0, row.projectName.indexOf("["));
},
//
isApprovalFormat(row, column) {
return this.selectDictLabel(this.isApprovalOptions, row.isApproval);
},
getId(res) {
// console.log(res)
getProDesign(res.id).then((response) => {

53
jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/index.vue

@ -120,6 +120,13 @@
prop="contractName"
min-width="120"
/>
<el-table-column
label="合同类型"
align="center"
prop="contractType"
:formatter="contractTypeFormat"
min-width="120"
/>
<el-table-column
label="项目名称"
align="center"
@ -359,6 +366,26 @@
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同类型" prop="contractType">
<el-select
v-model="form.contractType"
placeholder="请选择合同类型"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in contractTypeOptions"
:key="dict.dictLabel + dict.id"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发包单位名称" prop="constructionUnit">
<el-input
@ -563,10 +590,18 @@
<subcontractPage :contractNumber="form.contractNumber" />
</el-tab-pane>
<el-tab-pane label="合同审批信息" name="examinePage" :lazy="true">
<examinePage :contractNumber="form.contractNumber" />
<examinePage
:contractNumber="form.contractNumber"
:mainContract="form"
v-if="activeName == 'examinePage'"
/>
</el-tab-pane>
<el-tab-pane label="合同变更信息" name="alterPage" :lazy="true">
<alterPage :contractNumber="form.contractNumber" />
<alterPage
:contractNumber="form.contractNumber"
:mainContract="form"
v-if="activeName == 'alterPage'"
/>
</el-tab-pane>
<el-tab-pane label="合同验收" name="acceptancePage" :lazy="true">
<acceptancePage :contractNumber="form.contractNumber" />
@ -613,6 +648,10 @@
<template slot="label"> 合同编号 </template>
{{ this.contractMsg.contractNumber }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 合同类型 </template>
{{ contractTypeFormat(this.contractMsg) }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 发包单位名称 </template>
{{ this.contractMsg.constructionUnit }}
@ -874,6 +913,8 @@ export default {
},
//
contractStatusOptions: [],
//
contractTypeOptions: [],
contractMsg: {},
};
},
@ -882,6 +923,9 @@ export default {
this.getDicts("contract_status").then((response) => {
this.contractStatusOptions = response.data;
});
this.getDicts("contract_type").then((response) => {
this.contractTypeOptions = response.data;
});
},
watch: {
formData: function (n, o) {
@ -901,6 +945,11 @@ export default {
row.contractStatus
);
},
//
contractTypeFormat(row, column) {
return this.selectDictLabel(this.contractTypeOptions, row.contractType);
},
/** 查询合同基本信息列表 */
getList() {
this.loading = true;

2
jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/QualityBond.vue

@ -1,5 +1,5 @@
<template>
<div class="">
<div class="app-container" style="background: #fff">
<el-form
:model="queryParams"
ref="queryForm"

112
jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/alterPage.vue

@ -96,6 +96,27 @@
prop="contractNumber"
min-width="150"
/>
<el-table-column
label="合同名称"
align="center"
prop="contractName"
min-width="120"
>
<template slot="header">
合同名称
<el-tooltip
class="item"
effect="dark"
content="主合同或分包合同"
placement="top-start"
>
<i class="el-icon-info"></i>
</el-tooltip>
</template>
<template slot-scope="scope">
{{ scope.row.contractName }}
</template>
</el-table-column>
<el-table-column
label="变更原因"
align="center"
@ -201,6 +222,56 @@
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="124px">
<el-form-item label="合同名称(主合同或分包合同)" prop="contractName">
<template slot="label">
合同名称
<el-tooltip
class="item"
effect="dark"
content="主合同或分包合同"
placement="top-start"
>
<i class="el-icon-info"></i>
</el-tooltip>
</template>
<el-select
v-model="form.contractName"
placeholder="请选择合同名称(主合同或分包合同)"
style="width: 100%"
>
<!-- <el-option
v-for="item in mainAndSubNameOptions"
:key="item.id"
:label="item.subcontractName"
:value="item.subcontractName"
/> -->
<el-option-group
v-for="(group, index) in mainAndSubNameOptions"
:key="group.label"
:label="group.label"
>
<template v-if="index == 0">
<el-option
v-for="item in group.options"
:key="item.id"
:label="item.contractName"
:value="item.contractName"
>
</el-option>
</template>
<template v-if="index == 1">
<el-option
v-for="item in group.options"
:key="item.id"
:label="item.subcontractName"
:value="item.subcontractName"
>
</el-option>
</template>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item label="变更原因" prop="changeReason">
<el-input v-model="form.changeReason" placeholder="请输入变更原因" />
</el-form-item>
@ -279,6 +350,24 @@
}"
:contentStyle="{ minWidth: '350px' }"
>
<el-descriptions-item>
<template slot="label"> 合同编号 </template>
{{ this.alterMsg.contractNumber }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
合同名称
<el-tooltip
class="item"
effect="dark"
content="主合同或分包合同"
placement="top-start"
>
<i class="el-icon-info"></i>
</el-tooltip>
</template>
{{ this.alterMsg.contractName }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 变更原因 </template>
{{ this.alterMsg.changeReason }}
@ -326,10 +415,11 @@ import {
updateChange,
exportChange,
} from "@/api/build/contractChange";
import { listSubcontracts } from "@/api/build/subcontracts";
export default {
name: "Change",
props: ["contractNumber"],
props: ["contractNumber", "mainContract"],
data() {
return {
//
@ -423,11 +513,31 @@ export default {
],
},
alterMsg: {},
mainAndSubNameOptions: [
{
label: "主合同",
options: [],
},
{
label: "分包合同",
options: [],
},
],
};
},
created() {
this.getList();
},
mounted() {
listSubcontracts({ data: { contractNumber: this.contractNumber } }).then(
(res) => {
this.mainAndSubNameOptions[0].options.push(this.mainContract);
this.mainAndSubNameOptions[1].options = res.records;
console.log("this.mainAndSubNameOptions", this.mainAndSubNameOptions);
}
);
},
// axios
watch: {
contractNumber: function (n, o) {

24
jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/basePage.vue

@ -33,6 +33,25 @@
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="合同类型" prop="contractType">
<el-select
v-model="form.contractType"
placeholder="请选择合同类型"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in contractTypeOptions"
:key="dict.dictLabel + dict.id"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="承建单位" prop="constructionUnit">
<el-input
@ -317,6 +336,8 @@ export default {
contractNumber: "",
//
contractStatusOptions: [],
//
contractTypeOptions: [],
};
},
created() {
@ -325,6 +346,9 @@ export default {
this.getDicts("contract_status").then((response) => {
this.contractStatusOptions = response.data;
});
this.getDicts("contract_type").then((response) => {
this.contractTypeOptions = response.data;
});
// if (this.$route.query.baseDataId) {
// this.getList();
// }

119
jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/examinePage.vue

@ -97,6 +97,28 @@
prop="contractNumber"
min-width="150"
/>
<el-table-column
label="合同名称"
align="center"
prop="contractName"
min-width="120"
>
<template slot="header">
合同名称
<el-tooltip
class="item"
effect="dark"
content="主合同或分包合同"
placement="top-start"
>
<i class="el-icon-info"></i>
</el-tooltip>
</template>
<template slot-scope="scope">
{{ scope.row.contractName }}
</template>
</el-table-column>
<el-table-column
label="合同申请人"
align="center"
@ -192,7 +214,57 @@
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="82px">
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="合同名称(主合同或分包合同)" prop="contractName">
<template slot="label">
合同名称
<el-tooltip
class="item"
effect="dark"
content="主合同或分包合同"
placement="top-start"
>
<i class="el-icon-info"></i>
</el-tooltip>
</template>
<el-select
v-model="form.contractName"
placeholder="请选择合同名称(主合同或分包合同)"
style="width: 100%"
>
<!-- <el-option
v-for="item in mainAndSubNameOptions"
:key="item.id"
:label="item.subcontractName"
:value="item.subcontractName"
/> -->
<el-option-group
v-for="(group, index) in mainAndSubNameOptions"
:key="group.label"
:label="group.label"
>
<template v-if="index == 0">
<el-option
v-for="item in group.options"
:key="item.id"
:label="item.contractName"
:value="item.contractName"
>
</el-option>
</template>
<template v-if="index == 1">
<el-option
v-for="item in group.options"
:key="item.id"
:label="item.subcontractName"
:value="item.subcontractName"
>
</el-option>
</template>
</el-option-group>
</el-select>
</el-form-item>
<el-form-item label="合同申请人" prop="applicant">
<el-input v-model="form.applicant" placeholder="请输入合同申请人" />
</el-form-item>
@ -269,6 +341,24 @@
}"
:contentStyle="{ minWidth: '350px' }"
>
<el-descriptions-item>
<template slot="label"> 合同编号 </template>
{{ this.examineMsg.contractNumber }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
合同名称
<el-tooltip
class="item"
effect="dark"
content="主合同或分包合同"
placement="top-start"
>
<i class="el-icon-info"></i>
</el-tooltip>
</template>
{{ this.examineMsg.contractName }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 合同申请人 </template>
{{ this.examineMsg.applicant }}
@ -308,10 +398,11 @@ import {
updateAppr,
exportAppr,
} from "@/api/build/appr";
import { listSubcontracts } from "@/api/build/subcontracts";
export default {
name: "Appr",
props: ["contractNumber"],
props: ["contractNumber", "mainContract"],
data() {
return {
//
@ -365,6 +456,9 @@ export default {
form: {},
//
rules: {
contractName: [
{ required: true, message: "请选择合同名称", trigger: "blur" },
],
applicant: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
@ -378,11 +472,31 @@ export default {
],
},
examineMsg: {},
mainAndSubNameOptions: [
{
label: "主合同",
options: [],
},
{
label: "分包合同",
options: [],
},
],
};
},
created() {
this.getList();
},
mounted() {
listSubcontracts({ data: { contractNumber: this.contractNumber } }).then(
(res) => {
this.mainAndSubNameOptions[0].options.push(this.mainContract);
this.mainAndSubNameOptions[1].options = res.records;
console.log("this.mainAndSubNameOptions", this.mainAndSubNameOptions);
}
);
},
// axios
watch: {
contractNumber: function (n, o) {
@ -470,6 +584,7 @@ export default {
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加合同审批信息";
},

2
jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/options/performanceBond.vue

@ -1,5 +1,5 @@
<template>
<div class="">
<div class="app-container" style="background: #fff">
<el-form
:model="queryParams"
ref="queryForm"

3
jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue

@ -115,6 +115,7 @@
<scheduleManagement
:proNo="formData.proNo"
:proCode="formData.proCode"
:formData="formData"
/>
</el-tab-pane>
<el-tab-pane
@ -262,7 +263,7 @@ export default {
getList() {
getInfo(this.$route.query.baseDataId).then((response) => {
this.formData = response.data;
// console.log(this.formData);
// console.log(999, this.formData);
// listBidInfo(this.queryParams).then((response) => {
// console.log(response);
// // this.formData = response.records[0];

9
jwtech-admin-page/src/views/building/projectInfo/projectProcess/peasantWorkerSystem/index.vue

@ -32,6 +32,13 @@
>
<guaranteePaymentProjectFunds :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
label="是否树立维权公示牌"
name="rightsProtectionNoticeBoard"
:lazy="true"
>
<rightsProtectionNoticeBoard :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
</el-tabs>
</div>
</template>
@ -42,6 +49,7 @@ import marginAccount from "./options/marginAccount.vue";
import specificMarginAccount from "./options/specificMarginAccount.vue";
import payroll from "./options/payroll.vue";
import guaranteePaymentProjectFunds from "./options/guaranteePaymentProjectFunds.vue";
import rightsProtectionNoticeBoard from "./options/rightsProtectionNoticeBoard.vue";
export default {
components: {
realNameSystem,
@ -50,6 +58,7 @@ export default {
specificMarginAccount,
payroll,
guaranteePaymentProjectFunds,
rightsProtectionNoticeBoard,
},
props: ["proNo", "proCode"],
data() {

450
jwtech-admin-page/src/views/building/projectInfo/projectProcess/peasantWorkerSystem/options/rightsProtectionNoticeBoard.vue

@ -0,0 +1,450 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="是否公示" prop="isPublicity">
<el-select
v-model="queryParams.data.isPublicity"
placeholder="请选择是否公示"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in isPublicityOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item>
<!-- <el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
> -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:publicity:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:publicity:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:publicity:remove']"
>删除</el-button
>
</el-col>
<!-- <el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:publicity:export']"
>导出</el-button
>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="publicityList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="是否公示"
align="center"
prop="isPublicity"
:formatter="isPublicityFormat"
min-width="120"
/>
<el-table-column label="附件" align="center" prop="annex" min-width="120">
<template slot-scope="scope" v-if="scope.row.annex">
<div
v-for="(item, index) in JSON.parse(scope.row.annex)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="$myDownLoadFile(item)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:publicity:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:publicity:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改维权公示牌对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
width="1200px"
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="是否公示" prop="isPublicity">
<el-select
v-model="form.isPublicity"
placeholder="请选择是否公示"
style="width: 100%"
>
<el-option
v-for="dict in isPublicityOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="附件" prop="annex">
<!-- <el-input v-model="form.annex" placeholder="请输入附件" /> -->
<myUpload :fileList="fileList" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPublicity,
getPublicity,
delPublicity,
addPublicity,
updatePublicity,
exportPublicity,
} from "@/api/build/publicity";
export default {
name: "Publicity",
props: ["proNo", "proCode"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
publicityList: [],
//
title: "",
//
open: false,
//
isPublicityOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
isPublicity: null,
annex: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {},
fileList: [],
};
},
created() {
this.getList();
this.getDicts("whether").then((response) => {
this.isPublicityOptions = response.data;
});
},
methods: {
/** 查询维权公示牌列表 */
getList() {
this.loading = true;
this.queryParams.data.proCode = this.proCode;
this.queryParams.data.proNo = this.proNo;
listPublicity(this.queryParams).then((response) => {
this.publicityList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
isPublicityFormat(row, column) {
return this.selectDictLabel(this.isPublicityOptions, row.isPublicity);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null,
id: null,
isPublicity: null,
annex: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null,
id: null,
isPublicity: null,
annex: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加维权公示牌";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getPublicity(id).then((response) => {
this.form = response.data;
if (this.form.annex) {
this.fileList = JSON.parse(this.form.annex);
}
this.open = true;
this.title = "修改维权公示牌";
});
},
/** 提交按钮 */
submitForm() {
this.form.annex =
this.fileList.length > 0 ? JSON.stringify(this.fileList) : null;
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updatePublicity(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.proNo = this.proNo;
this.form.proCode = this.proCode;
addPublicity(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delPublicity(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
let message = "是否确认导出所有的数据项?";
if (this.ids) {
message = "是否确认导出选中的数据项?";
queryParams.ids = this.ids;
}
this.$confirm(message, "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return exportPublicity(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

28
jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/index.vue

@ -9,13 +9,28 @@
label="年度计划管理"
name="annualPlanManagement"
:lazy="true"
v-if="checkPermi(['building:jdgl:ndjhgl'])"
>
<annualPlanManagement :proNo="proNo" :proCode="proCode" />
<annualPlanManagement
:proNo="proNo"
:proCode="proCode"
:formData="formData"
/>
</el-tab-pane>
<el-tab-pane label="进度填报" name="progressFilling" :lazy="true">
<el-tab-pane
label="进度填报"
name="progressFilling"
:lazy="true"
v-if="checkPermi(['building:jdgl:jdtb'])"
>
<progressFilling :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane label="投资完成" name="completionOfInvestment" :lazy="true">
<el-tab-pane
label="投资完成"
name="completionOfInvestment"
:lazy="true"
v-if="checkPermi(['building:jdgl:tzwc'])"
>
<completionOfInvestment :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
</el-tabs>
@ -25,6 +40,7 @@
import annualPlanManagement from "./options/annualPlanManagement.vue";
import progressFilling from "./options/progressFilling.vue";
import completionOfInvestment from "./options/completionOfInvestment.vue";
import { checkPermi, checkRole } from "@/utils/permission";
export default {
components: {
@ -32,12 +48,12 @@ export default {
progressFilling,
completionOfInvestment,
},
props: ["proNo", "proCode"],
props: ["proNo", "proCode", "formData"],
data() {
return {
activeName: "annualPlanManagement",
routeList: [],
formData: [],
// formData: [],
form: {},
//
queryParams: {
@ -55,6 +71,8 @@ export default {
this.routeList = JSON.parse(this.$store.state.basePageData.routeList);
},
methods: {
checkRole,
checkPermi,
goBack() {
this.$router.back();
},

975
jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/annualPlanManagement.vue

@ -1,3 +1,976 @@
<template>
<div>计划管理</div>
<div class="app-container">
<!-- 计划管理 -->
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="类型" prop="projectType">
<el-cascader
v-model="queryParams.data.projectType"
:options="projectTypeoptions"
:props="projectTypeOptionProps"
placeholder="请选择项目类型"
clearable
@change="handleQuery"
size="small"
style="width: 100%"
></el-cascader>
</el-form-item>
<el-form-item label="年份" prop="planYear">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.data.planYear"
type="year"
value-format="yyyy"
placeholder="选择年份"
@change="handleQuery"
>
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="计划状态" prop="planStatus">
<el-select
v-model="queryParams.data.planStatus"
placeholder="请选择计划状态"
clearable
size="small"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item> -->
<el-form-item>
<!-- <el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
> -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['progress:plan:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['progress:plan:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['progress:plan:remove']"
>删除</el-button
>
</el-col>
<!-- <el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['progress:plan:export']"
>导出</el-button
>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="planList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="项目名称"
align="center"
prop="projectName"
min-width="120"
/>
<el-table-column
label="项目类型"
align="center"
prop="projectType"
:formatter="projectTypeFormat"
min-width="120"
/>
<el-table-column
label="年份"
align="center"
prop="planYear"
min-width="120"
>
<!-- <template slot-scope="scope">
<span>{{ parseTime(scope.row.planYear, "{y}-{m}-{d}") }}</span>
</template> -->
</el-table-column>
<el-table-column
label="合计(万元)"
align="center"
prop="p4"
min-width="120"
>
<template slot-scope="scoped">
{{ sumAmount(scoped.row) }}
</template>
</el-table-column>
<el-table-column
label="1-3月(万元)"
align="center"
prop="p1"
min-width="120"
>
<template slot-scope="scoped">
{{ (scoped.row.p1 + scoped.row.p2 + scoped.row.p3).toFixed(2) }}
</template>
</el-table-column>
<!-- </el-table-column>
<el-table-column
label="2月(万元)"
align="center"
prop="p2"
min-width="120"
/>
<el-table-column
label="3月(万元)"
align="center"
prop="p3"
min-width="120"
/> -->
<el-table-column
label="4月(万元)"
align="center"
prop="p4"
min-width="120"
/>
<el-table-column
label="5月(万元)"
align="center"
prop="p5"
min-width="120"
/>
<el-table-column
label="6月(万元)"
align="center"
prop="p6"
min-width="120"
/>
<el-table-column
label="7月(万元)"
align="center"
prop="p7"
min-width="120"
/>
<el-table-column
label="8月(万元)"
align="center"
prop="p8"
min-width="120"
/>
<el-table-column
label="9月(万元)"
align="center"
prop="p9"
min-width="120"
/>
<el-table-column
label="10月(万元)"
align="center"
prop="p10"
min-width="120"
/>
<el-table-column
label="11月(万元)"
align="center"
prop="p11"
min-width="120"
/>
<el-table-column
label="12月(万元)"
align="center"
prop="p12"
min-width="120"
/>
<!-- <el-table-column
label="计划状态"
align="center"
prop="planStatus"
min-width="120"
/> -->
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['progress:plan:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['progress:plan:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改进度计划对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
width="1200px"
append-to-body
:close-on-click-modal="false"
>
<el-row :gutter="15">
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-col :span="12">
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="form.projectName"
placeholder="请输入项目名称"
readonly
/>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="项目类型" prop="projectType">
<el-input
v-model="form.projectType"
placeholder="请输入项目类型"
/>
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="年份" prop="planYear">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.planYear"
type="year"
value-format="yyyy"
placeholder="选择年份"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="1月计划投资" prop="p1">
<el-input v-model="form.p1" placeholder="请输入1月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="2月计划投资" prop="p2">
<el-input v-model="form.p2" placeholder="请输入2月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="3月计划投资" prop="p3">
<el-input v-model="form.p3" placeholder="请输入3月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="4月计划投资" prop="p4">
<el-input v-model="form.p4" placeholder="请输入4月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="5月计划投资" prop="p5">
<el-input v-model="form.p5" placeholder="请输入5月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="6月计划投资" prop="p6">
<el-input v-model="form.p6" placeholder="请输入6月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="7月计划投资" prop="p7">
<el-input v-model="form.p7" placeholder="请输入7月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="8月计划投资" prop="p8">
<el-input v-model="form.p8" placeholder="请输入8月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="9月计划投资" prop="p9">
<el-input v-model="form.p9" placeholder="请输入9月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="10月计划投资" prop="p10">
<el-input v-model="form.p10" placeholder="请输入10月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="11月计划投资" prop="p11">
<el-input v-model="form.p11" placeholder="请输入11月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="12月计划投资" prop="p12">
<el-input v-model="form.p12" placeholder="请输入12月计划投资">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPlan,
getPlan,
delPlan,
addPlan,
updatePlan,
exportPlan,
} from "@/api/build/plan";
export default {
name: "Plan",
props: ["proNo", "proCode", "formData"],
data() {
return {
projectTypeOptionProps: {
emitPath: false,
checkStrictly: true, //
},
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
planList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null,
projectName: null,
projectType: null,
p1: null,
p2: null,
p3: null,
p4: null,
p5: null,
p6: null,
p7: null,
p8: null,
p9: null,
p10: null,
p11: null,
p12: null,
planYear: null,
planStatus: null,
v1: null,
v2: null,
v3: null,
v4: null,
v5: null,
v6: null,
v7: null,
v8: null,
v9: null,
v10: null,
v11: null,
v12: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {
projectName: [
{ required: true, message: "请输入项目名称", trigger: "blur" },
],
planYear: [{ required: true, message: "请输入年份", trigger: "blur" }],
p1: [
{
required: true,
pattern: /./,
message: "请输入1月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p2: [
{
required: true,
pattern: /./,
message: "请输入2月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p3: [
{
required: true,
pattern: /./,
message: "请输入3月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p4: [
{
required: true,
pattern: /./,
message: "请输入4月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p5: [
{
required: true,
pattern: /./,
message: "请输入5月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p6: [
{
required: true,
pattern: /./,
message: "请输入6月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p7: [
{
required: true,
pattern: /./,
message: "请输入7月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p8: [
{
required: true,
pattern: /./,
message: "请输入8月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p9: [
{
required: true,
pattern: /./,
message: "请输入9月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p10: [
{
required: true,
pattern: /./,
message: "请输入10月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p11: [
{
required: true,
pattern: /./,
message: "请输入11月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
p12: [
{
required: true,
pattern: /./,
message: "请输入12月计划投资金额",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
},
//
zd_projectTypeOptions: [],
//
ms_projectTypeOptions: [],
};
},
computed: {
projectTypeoptions() {
let op = [
{
label: "重大项目",
value: "zd, ",
children: this.zd_projectTypeOptions.map((item) => {
return {
label: item.dictLabel,
value: "zd," + item.dictValue,
};
}),
},
{
label: "面上项目",
value: "ms, ",
children: this.ms_projectTypeOptions.map((item) => {
return {
label: item.dictLabel,
value: "ms," + item.dictValue,
};
}),
},
];
// console.log(3333, op);
return op;
},
},
created() {
this.getList();
this.getDicts("major_project").then((response) => {
// console.log("4444444444444444", response.data);
this.zd_projectTypeOptions = response.data;
});
this.getDicts("general_project").then((response) => {
// console.log("5555555555555", response.data);
this.ms_projectTypeOptions = response.data;
});
},
methods: {
sumAmount(row) {
return (
row.p1 +
row.p2 +
row.p3 +
row.p4 +
row.p5 +
row.p6 +
row.p7 +
row.p8 +
row.p9 +
row.p10 +
row.p11 +
row.p12
).toFixed(2);
},
/** 查询进度计划列表 */
getList() {
this.loading = true;
listPlan(this.queryParams).then((response) => {
this.planList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
projectTypeFormat(row, column) {
if (row.isMajor == "zd") {
return this.selectDictLabel(
this.zd_projectTypeOptions,
row.projectType
);
} else if (row.isMajor == "ms") {
return this.selectDictLabel(
this.ms_projectTypeOptions,
row.projectType
);
}
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null,
projectName: null,
projectType: null,
p1: null,
p2: null,
p3: null,
p4: null,
p5: null,
p6: null,
p7: null,
p8: null,
p9: null,
p10: null,
p11: null,
p12: null,
planYear: null,
planStatus: null,
v1: null,
v2: null,
v3: null,
v4: null,
v5: null,
v6: null,
v7: null,
v8: null,
v9: null,
v10: null,
v11: null,
v12: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
remark: null,
projectName: null,
projectType: null,
p1: null,
p2: null,
p3: null,
p4: null,
p5: null,
p6: null,
p7: null,
p8: null,
p9: null,
p10: null,
p11: null,
p12: null,
planYear: null,
planStatus: null,
v1: null,
v2: null,
v3: null,
v4: null,
v5: null,
v6: null,
v7: null,
v8: null,
v9: null,
v10: null,
v11: null,
v12: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.form.projectName = this.formData.projectName;
this.form.projectType = this.formData.projectType;
this.form.isMajor = this.formData.isMajor;
this.open = true;
this.title = "添加进度计划";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getPlan(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改进度计划";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updatePlan(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.proNo = this.proNo;
this.form.proCode = this.proCode;
addPlan(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delPlan(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
let message = "是否确认导出所有的数据项?";
if (this.ids) {
message = "是否确认导出选中的数据项?";
queryParams.ids = this.ids;
}
this.$confirm(message, "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return exportPlan(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

1342
jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/completionOfInvestment.vue

File diff suppressed because it is too large

1331
jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/progressFilling.vue

File diff suppressed because it is too large

619
jwtech-admin-page/src/views/project/preDesign/index.vue

@ -267,9 +267,9 @@
@close="close"
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="130px">
<el-form-item label="项目名称" prop="projectName">
<!-- <el-input v-model="form.projectName" placeholder="请输入项目名称" /> -->
<el-row>
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<!-- <el-form-item label="项目名称" prop="projectName">
<el-select
v-model="form.projectName"
placeholder="项目名称"
@ -286,108 +286,330 @@
@click.native="getId(dict)"
/>
</el-select>
</el-form-item>
<el-form-item label="建设性质" prop="constructionNature">
<!-- <el-input
</el-form-item> -->
<el-col :span="12">
<el-form-item label="是否有建议书审批" prop="isApproval">
<el-select
v-model="form.isApproval"
placeholder="请选择是否有建议书审批"
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in isApprovalOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- 无建议书审批 -->
<el-form-item
label="项目名称"
prop="projectName"
v-if="form.isApproval == '0'"
>
<el-input
v-model="form.projectName"
placeholder="请输入项目名称"
size="small"
></el-input>
</el-form-item>
<!-- 有建议书审批 -->
<el-form-item label="项目名称" prop="projectName" v-else>
<el-select
v-model="form.projectName"
placeholder="请选择项目名称"
filterable
clearable
size="small"
style="width: 100%"
:disabled="!form.isApproval"
>
<el-option
v-for="dict in projectNameOptions"
:key="dict.projectName + dict.id"
:label="dict.projectName + '[' + dict.projectCode + ']'"
:value="dict.projectName + '[' + dict.projectCode + ']'"
@click.native="getId(dict)"
/>
</el-select>
</el-form-item>
</el-col>
<!-- 无建议书审批时 -->
<el-col :span="12" v-if="form.isApproval == '0'">
<el-form-item label="项目类型" prop="projectType">
<el-select
v-model="form.projectType"
placeholder="请选择项目类型"
style="width: 100%"
clearable
>
<el-option
v-for="dict in projectTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<!-- 无建议书审批时选择行政区划 -->
<el-col :span="12" v-if="form.isApproval == '0'">
<el-form-item label="行政区划" prop="adcd">
<el-cascader
:options="areasOptions"
v-model="form.adcd"
:props="areasOptionProps"
placeholder="请选择行政区划"
clearable
size="small"
style="width: 100%"
@change="handleChange"
>
</el-cascader>
</el-form-item>
</el-col>
<el-col :span="12" v-if="form.isApproval == '0'">
<el-form-item label="项目编码" prop="projectCode">
<el-input
v-model="form.projectCode"
placeholder="请输入项目编码"
:disabled="isEdit"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设性质" prop="constructionNature">
<!-- <el-input
v-model="form.constructionNature"
placeholder="请输入建设性质"
/> -->
<el-select
v-model="form.constructionNature"
placeholder="请选择建设性质"
style="width: 100%"
clearable
>
<el-option
v-for="dict in constructionNatureOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="建设地点" prop="constructionLocation">
<el-input
v-model="form.constructionLocation"
placeholder="请输入建设地点"
/>
</el-form-item>
<el-form-item label="项目单位名称" prop="projectUnitName">
<el-input
v-model="form.projectUnitName"
placeholder="请输入项目单位名称"
/>
</el-form-item>
<el-form-item label="简介" prop="briefIntroduction">
<el-input
v-model="form.briefIntroduction"
placeholder="请输入简介"
type="textarea"
/>
</el-form-item>
<el-form-item label="项目用地情况" prop="projectLandSituation">
<el-input
v-model="form.projectLandSituation"
placeholder="请输入项目用地情况"
type="textarea"
/>
</el-form-item>
<el-form-item label="初步设计概算报告" prop="designEstimateReport">
<!-- <el-input
<el-select
v-model="form.constructionNature"
placeholder="请选择建设性质"
style="width: 100%"
clearable
>
<el-option
v-for="dict in constructionNatureOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设地点" prop="constructionLocation">
<el-input
v-model="form.constructionLocation"
placeholder="请输入建设地点"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目单位名称" prop="projectUnitName">
<el-input
v-model="form.projectUnitName"
placeholder="请输入项目单位名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="编制单位" prop="preparationUnit">
<el-input
v-model="form.preparationUnit"
placeholder="请输入编制单位"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批复时间" prop="approvalTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.approvalTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择批复时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上报时间" prop="reportTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.reportTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择上报时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批复意见" prop="approvalOpinion">
<el-input
v-model="form.approvalOpinion"
placeholder="请输入批复意见"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批复部门" prop="approvalDepartment">
<el-input
v-model="form.approvalDepartment"
placeholder="请输入批复部门"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批复文号" prop="approvalNo">
<el-input
v-model="form.approvalNo"
placeholder="请输入批复文号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批复工期" prop="approvalDuration">
<el-input
v-model="form.approvalDuration"
placeholder="请输入批复工期"
>
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="概算总投资" prop="totalInvestment">
<el-input
v-model="form.totalInvestment"
placeholder="请输入概算总投资"
>
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划开工时间" prop="planWorkDate">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.planWorkDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择计划开工时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="总用地面积" prop="totalArea">
<el-input v-model="form.totalArea" placeholder="请输入总用地面积">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="新增建设用地" prop="addArea">
<el-input v-model="form.addArea" placeholder="请输入新增建设用地">
<template slot="append"></template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="简介" prop="briefIntroduction">
<el-input
v-model="form.briefIntroduction"
placeholder="请输入简介"
type="textarea"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="项目用地情况" prop="projectLandSituation">
<el-input
v-model="form.projectLandSituation"
placeholder="请输入项目用地情况"
type="textarea"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="初步设计概算报告" prop="designEstimateReport">
<!-- <el-input
v-model="form.designEstimateReport"
placeholder="请输入初步设计概算报告"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList')"
:on-preview="handleDesignPreview"
:on-remove="handleDesignRemove"
:before-remove="beforeDesignRemove"
:on-exceed="handleDesignExceed"
:on-success="submitDesignUpload"
:file-list="designFileList"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
<el-form-item label="相关上位规划附件" prop="relatedAttachment">
<!-- <el-input
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList')"
:on-preview="handleDesignPreview"
:on-remove="handleDesignRemove"
:before-remove="beforeDesignRemove"
:on-exceed="handleDesignExceed"
:on-success="submitDesignUpload"
:file-list="designFileList"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="相关上位规划附件" prop="relatedAttachment">
<!-- <el-input
v-model="form.relatedAttachment"
type="textarea"
placeholder="请输入内容"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="
(file) => $fileBeforeUpload(file, 'relatedFileList')
"
:on-preview="handleRelatedPreview"
:on-remove="handleRelatedRemove"
:before-remove="beforeRelatedRemove"
:on-exceed="handleRelatedExceed"
:on-success="submitRelatedUpload"
:file-list="relatedFileList"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-form>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="
(file) => $fileBeforeUpload(file, 'relatedFileList')
"
:on-preview="handleRelatedPreview"
:on-remove="handleRelatedRemove"
:before-remove="beforeRelatedRemove"
:on-exceed="handleRelatedExceed"
:on-success="submitRelatedUpload"
:file-list="relatedFileList"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
@ -432,6 +654,15 @@
<template slot="label"> 行政区划 </template>
{{ formatAdcd(this.designMsg) }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目类型 </template>
{{ projectTypeFormat(this.designMsg) }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目编码 </template>
{{ this.designMsg.projectCode }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 建设性质 </template>
{{ this.constructionNatureFormat(this.designMsg) }}
@ -444,6 +675,54 @@
<template slot="label"> 项目单位名称 </template>
{{ this.designMsg.projectUnitName }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 编制单位 </template>
{{ this.designMsg.preparationUnit }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 批复时间 </template>
{{ this.designMsg.approvalTime }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 上报时间 </template>
{{ this.designMsg.reportTime }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 批复意见 </template>
{{ this.designMsg.approvalOpinion }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 批复部门 </template>
{{ this.designMsg.approvalDepartment }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 批复文号 </template>
{{ this.designMsg.approvalNo }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 批复工期 </template>
{{ this.designMsg.approvalDuration }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 概算总投资 </template>
{{ this.designMsg.totalInvestment }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 计划开工时间 </template>
{{ this.designMsg.planWorkDate }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 总用地面积 </template>
{{ this.designMsg.totalArea }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 新增建设用地 </template>
{{ this.designMsg.addArea }}
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label"> 简介 </template>
{{ this.designMsg.briefIntroduction }}
@ -584,6 +863,18 @@ export default {
updateUid: null,
updateTime: null,
owerDept: null,
approvalDepartment: null,
approvalNo: null,
approvalDuration: null,
totalInvestment: null,
planWorkDate: null,
totalArea: null,
addArea: null,
approvalTime: null,
reportTime: null,
preparationUnit: null,
approvalOpinion: null,
},
cv: {},
//
@ -598,6 +889,90 @@ export default {
form: {},
//
rules: {
isApproval: [
{
required: true,
message: "请选择是否有建议书审批",
trigger: "blur",
},
],
projectCode: [
{
required: true,
message: "请输入项目编码",
trigger: "blur",
},
],
projectType: [
{
required: true,
message: "请选择项目类型",
trigger: "blur",
},
],
adcd: [
{
required: true,
message: "请选择行政区划",
trigger: "blur",
},
],
approvalDepartment: [
{
required: true,
message: "请输入批复部门",
trigger: "blur",
},
],
approvalNo: [
{
required: true,
message: "请输入批复文号",
trigger: "blur",
},
],
approvalDuration: [
{
required: true,
message: "请输入批复工期",
trigger: "blur",
},
{
pattern: /^[1-9][0-9]{0,8}$/,
message: "请输入1-9位正整数,不包含0",
trigger: "blur",
},
],
totalInvestment: [
{
required: true,
message: "请输入概算总投资",
trigger: "blur",
},
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
totalArea: [
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
addArea: [
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
projectName: [
{ required: true, message: "请输入项目名称", trigger: "blur" },
],
@ -633,6 +1008,11 @@ export default {
projectType: "",
proNo: "",
projectCode: "",
//
isApprovalOptions: [],
//
projectTypeOptions: [],
isEdit: false,
};
},
created() {
@ -642,6 +1022,12 @@ export default {
//
this.constructionNatureOptions = response.data;
});
this.getDicts("whether").then((response) => {
this.isApprovalOptions = response.data;
});
this.getDicts("plan_type").then((response) => {
this.projectTypeOptions = response.data;
});
},
methods: {
formatAdcd(row) {
@ -729,6 +1115,14 @@ export default {
return row.projectName.slice(0, row.projectName.indexOf("["));
}
},
//
projectTypeFormat(row, column) {
return this.selectDictLabel(this.projectTypeOptions, row.projectType);
},
//
isApprovalFormat(row, column) {
return this.selectDictLabel(this.isApprovalOptions, row.isApproval);
},
//
reset() {
this.form = {
@ -748,6 +1142,17 @@ export default {
updateUid: null,
updateTime: null,
owerDept: null,
approvalDepartment: null,
approvalNo: null,
approvalDuration: null,
totalInvestment: null,
planWorkDate: null,
totalArea: null,
addArea: null,
approvalTime: null,
reportTime: null,
preparationUnit: null,
approvalOpinion: null,
};
this.designFileList = [];
this.relatedFileList = [];
@ -775,6 +1180,17 @@ export default {
updateUid: null,
updateTime: null,
owerDept: null,
approvalDepartment: null,
approvalNo: null,
approvalDuration: null,
totalInvestment: null,
planWorkDate: null,
totalArea: null,
addArea: null,
approvalTime: null,
reportTime: null,
preparationUnit: null,
approvalOpinion: null,
},
cv: {
name: null,
@ -811,6 +1227,7 @@ export default {
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.isEdit = false;
listProposal(this.queryParams).then((response) => {
this.projectNameOptions = response.records;
console.log("this.projectNameOptions", this.projectNameOptions);
@ -822,6 +1239,8 @@ export default {
handleUpdate(row) {
console.log("row", row);
this.reset();
this.isEdit = true;
const id = row.id || this.ids;
getProDesign(id).then((response) => {
this.form = response.data;
@ -867,8 +1286,8 @@ export default {
);
}
if (this.form.id != null) {
this.form.proNo = this.proNo;
this.form.projectType = this.projectType;
// this.form.proNo = this.proNo;
// this.form.projectType = this.projectType;
updateProDesign(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
@ -877,6 +1296,10 @@ export default {
}
});
} else {
if (this.form.isApproval == "0") {
// console.log("uuidv4()", uuidv4());
this.form.proNo = uuidv4();
}
addProDesign(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
@ -1056,7 +1479,7 @@ export default {
@import "@/assets/css/dialog.scss";
::v-deep {
.el-dialog {
margin-top: 10vh !important;
margin-top: 5vh !important;
}
}
</style>

2
jwtech-admin-page/src/views/project/proposal/index.vue

@ -445,7 +445,7 @@
<el-input
v-model="form.projectCode"
placeholder="请输入项目编码"
:readonly="isEdit"
:disabled="isEdit"
/>
</el-form-item>
</el-col>

26
jwtech-admin-page/src/views/project/report/index.vue

@ -405,7 +405,7 @@
<el-input
v-model="form.projectCode"
placeholder="请输入项目编码"
:readonly="isEdit"
:disabled="isEdit"
/>
</el-form-item>
</el-col>
@ -820,6 +820,13 @@ export default {
trigger: "blur",
},
],
proCode: [
{
required: true,
message: "请输入项目编码",
trigger: "blur",
},
],
adcd: [
{
required: true,
@ -904,10 +911,10 @@ export default {
// console.log(res)
getProposal(res.id).then((response) => {
// console.log(response.data)
this.form.projectType = response.data.projectType;
this.form.proNo = response.data.proNo;
this.projectType = response.data.projectType;
this.proNo = response.data.proNo;
this.projectCode = response.data.projectCode;
this.form.adcd = response.data.adcd;
this.form.projectCode = response.data.projectCode;
});
},
compareTime(rule, value, callback) {
@ -1153,15 +1160,22 @@ export default {
},
/** 提交按钮 */
submitForm() {
console.log("0000", this.$refs["form"]);
this.$refs["form"].validate((valid) => {
console.log(11111);
if (valid) {
//
this.form.feasibilityReportFile = JSON.stringify(this.fileList);
this.form.feasibilityReportAttachment = JSON.stringify(
this.attachmentList
);
if (this.proNo) {
this.form.proNo = this.proNo;
}
if (this.projectCode) {
this.form.projectCode = this.projectCode;
}
if (this.projectType) {
this.form.projectType = this.projectType;
}
if (
this.form.projectName &&
this.form.projectName.indexOf("[") != -1

Loading…
Cancel
Save