Browse Source

仓库更改

Initial-inspection
zth 8 months ago
parent
commit
afb3b8e096
  1. 52
      jwtech-admin-page/src/api/build/meas.js
  2. 3
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue
  3. 23
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/index.vue
  4. 972
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/engOrder.vue
  5. 141
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/orgDesign.vue
  6. 949
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/preparationForConstruction.vue
  7. 949
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/startUpDocument.vue
  8. 16
      jwtech-admin-page/src/views/welcome/index.vue
  9. 17
      jwtech-admin/src/main/java/com/kms/config/WaterRequestUtil.java
  10. 19
      jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java
  11. 12
      jwtech-admin/src/main/resources/application-test.yml
  12. 1
      jwtech-system/src/main/java/com/kms/build/controller/BsSgcJsjdBuiAttendanceInformationController.java
  13. 4
      jwtech-system/src/main/java/com/kms/build/domain/BsSgcJsjdBuiCommen.java
  14. 14
      jwtech-system/src/main/java/com/kms/build/domain/BsSgcJsjdBuiEngOrder.java
  15. 3
      jwtech-system/src/main/java/com/kms/build/domain/BsSgcJsjdBuiOrgDesign.java
  16. 21
      jwtech-system/src/main/java/com/kms/build/service/BsSgcjsjdBuiProInfoService.java
  17. 2
      jwtech-system/src/main/java/com/kms/earlyStage/service/SpecialProjectPreDesignService.java

52
jwtech-admin-page/src/api/build/meas.js

@ -55,7 +55,7 @@ export function exportMeas(query) {
export function listOrg(query) {
return request({
url: '/build/orgDesign/list',
url: '/build/order/list',
method: 'post',
data: query
})
@ -64,7 +64,7 @@ export function listOrg(query) {
// 查询施工准备措施详细
export function getOrg(id) {
return request({
url: '/build/orgDesign/' + id,
url: '/build/order/' + id,
method: 'get'
})
}
@ -72,7 +72,7 @@ export function getOrg(id) {
// 新增施工准备措施
export function addOrg(data) {
return request({
url: '/build/orgDesign',
url: '/build/order',
method: 'post',
data: data
})
@ -81,7 +81,7 @@ export function addOrg(data) {
// 修改施工准备措施
export function updateOrg(data) {
return request({
url: '/build/orgDesign',
url: '/build/order',
method: 'put',
data: data
})
@ -90,8 +90,50 @@ export function updateOrg(data) {
// 删除施工准备措施
export function delOrg(id) {
return request({
url: '/build/orgDesign/' + id,
url: '/build/order/' + id,
method: 'delete'
})
}
export function listOrder(query) {
return request({
url: '/build/order/list',
method: 'post',
data: query
})
}
// 查询施工准备措施详细
export function getOrder(id) {
return request({
url: '/build/order/' + id,
method: 'get'
})
}
// 新增施工准备措施
export function addOrder(data) {
return request({
url: '/build/order',
method: 'post',
data: data
})
}
// 修改施工准备措施
export function updateOrder(data) {
return request({
url: '/build/order',
method: 'put',
data: data
})
}
// 删除施工准备措施
export function delOrder(id) {
return request({
url: '/build/order/' + id,
method: 'delete'
})
}

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

@ -203,7 +203,8 @@ import { checkPermi, checkRole } from "@/utils/permission";
import baseMsg from "./baseMsg/index.vue";
import firmInfo from "./firmInfo.vue";
import contract from "./contract/index.vue";
import preparationForConstruction from "./preparationForConstruction.vue";
// import preparationForConstruction from "./preparationForConstruction.vue";
import preparationForConstruction from './preparationConstruction/index.vue'
// import qualityControl from "./qualityControl.vue";
import qualityControl from "./qualityControl/index.vue";
import safetyRecord from "./safetyRecord.vue";

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

@ -4,6 +4,23 @@
v-model="activeName"
style="margin-bottom: 20px"
>
<el-tab-pane
label="施工组织设计"
name="orgDesign"
:lazy="true"
>
<orgDesign :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
label="施工准备措施"
name="engOrder"
:lazy="true"
>
<eng-order :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
label="工程施工令"
name="preparationForConstruction"
@ -17,11 +34,13 @@
<script>
import preparationForConstruction from '../preparationForConstruction.vue'
import preparationForConstruction from './options/preparationForConstruction.vue'
import orgDesign from "./options/orgDesign.vue";
import engOrder from "./options/engOrder.vue";
export default {
props:["proNo","proCode"],
components: { preparationForConstruction },
components: { preparationForConstruction,orgDesign,engOrder },
data(){
return{
activeName:"preparationForConstruction"

972
jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/engOrder.vue

@ -0,0 +1,972 @@
<template>
<!-- 施工准备 -->
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="标段名称" prop="sectionName">
<el-input
v-model="queryParams.cv.value"
placeholder="请输入标段名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
>
<el-button
type="primary"
slot="append"
icon="el-icon-search"
size="small"
@click="handleQuery"
></el-button>
</el-input>
</el-form-item>
<el-form-item>
<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="['build:sgzb: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="['build:sgzb: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="['build:sgzb:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="infoList"
@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="sectionName"
min-width="120"
/>
<el-table-column
label="施工准备措施内容"
align="center"
prop="constructionOrganizationFiles"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.constructionOrganizationFiles
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile2(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="施工准备措施检查信息"
align="center"
prop="checkInformationFiles"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.checkInformationFiles
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile2(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
min-width="180"
fixed="right"
>
<template slot-scope="scope">
<!-- <el-button
size="mini"
type="text"
icon="el-icon-view"
@click="viewInfo(scope.row)"
v-hasPermi="['build:sgzb:view']"
>查看</el-button
> -->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:sgzb:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:sgzb: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"
label-position="top"
>
<!-- ===============工程开工令==================== -->
<!-- <div class="listTitle" style="margin-top: 0">
<span>工程开工令</span>
</div> -->
<el-col :span="24">
<el-form-item label="标段名称" prop="sectionName">
<choose-section :form="form" :proCode="proCode" :proNo="proNo" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="施工准备措施内容" prop="preparationMeasuresFiles">
<!-- <el-input
v-model="form.workCommencementOrder1"
placeholder="请输入意见附件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove1"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload1"
:file-list="fileList1"
>
<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="24">
<el-form-item label="施工准备措施检查信息" prop="checkInformationFiles">
<!-- <el-input
v-model="form.workCommencementOrder1"
placeholder="请输入意见附件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handleOpinionPreview2"
:on-remove="handleOpinionRemove2"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload2"
:file-list="fileList2"
>
<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>
<!-- ===============施工组织设计==================== -->
<!-- <div class="listTitle">
<span>施工组织设计</span>
</div>
<el-col :span="24">
<el-form-item
label="施工组织设计附件"
prop="workCommencementOrder2"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove2"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload2"
:file-list="fileList2"
>
<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="reportTime2">
<el-date-picker
v-model="form.reportTime2"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime2">
<el-date-picker
v-model="form.approvalTime2"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion2">
<el-input
v-model="form.approvalOpinion2"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============施工准备措施==================== -->
<!-- <div class="listTitle">
<span>施工准备措施</span>
</div>
<el-col :span="24">
<el-form-item
label="施工准备措施附件"
prop="workCommencementOrder3"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove3"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload3"
:file-list="fileList3"
>
<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="24">
<el-form-item label="施工准备措施内容" prop="approvalOpinion3">
<el-input
v-model="form.approvalOpinion3"
placeholder="请输入施工准备措施内容"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============施工准备措施检查==================== -->
<!-- <div class="listTitle">
<span>施工准备措施检查</span>
</div>
<el-col :span="24">
<el-form-item
label="施工准备措施检查附件"
prop="workCommencementOrder4"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList4')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove4"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload4"
:file-list="fileList4"
>
<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="24">
<el-form-item label="批复意见" prop="approvalOpinion4">
<el-input
v-model="form.approvalOpinion4"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============项目开工文件==================== -->
<!-- <div class="listTitle">
<span>项目开工文件</span>
</div>
<el-col :span="24">
<el-form-item label="项目开工文件" prop="workCommencementOrder5">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList5')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove5"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload5"
:file-list="fileList5"
>
<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="reportTime5">
<el-date-picker
v-model="form.reportTime5"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime5">
<el-date-picker
v-model="form.approvalTime5"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion5">
<el-input
v-model="form.approvalOpinion5"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
</el-form>
<!-- <div class="btnList">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div> -->
</el-row>
<div class="dialog-footer" slot="footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listOrder,
getOrder,
delOrder,
addOrder,
updateOrder,
exportMeas,
} from "@/api/build/meas";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import chooseSection from '../../components/chooseSection.vue'
export default {
components: { chooseSection },
name: "Meas",
props: ["proNo", "proCode"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
viewTitle: "",
//
open: false,
viewOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
id: null,
proCode: null,
proNo: null,
constructionOrganizationName: null,
approvalOpinions: null,
approvalTime: null,
sectionName: null,
sectionCode:null,
constructionOrganizationFiles:null,
organizationalStructureFiles:null,
},
cv: {
name: "sectionName",
type: "like",
value: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
//
form: {
},
preMsg: {},
//
rules: {
sectionName: [
{ required: true, message: "请选择标段名称", trigger: "change" },
],
workCommencementOrder: [
{ required: true, message: "请上传开工令文件", trigger: "blur" },
],
reportingTime: [
{ required: true, message: "请选择申报时间", trigger: "blur" },
],
approvalTime: [
{ required: true, message: "请选择审批时间", trigger: "blur" },
],
approvalOpinion: [
{ required: true, message: "请输入批复意见", trigger: "blur" },
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion2: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion3: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion4: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion5: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
fileList2: [],
fileList3: [],
fileList4: [],
fileList5: [],
infoList: [],
};
},
created() {
this.getList();
},
methods: {
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.proCode = null
listOrder(this.queryParams).then((response) => {
this.infoList = response.records;
// console.log("responseresponse", response);
// if (response.records[0]) {
// this.preMsg = response.records[0];
// }
this.total = response.total;
this.loading = false;
});
},
//
reset() {
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.fileList4 = [];
this.fileList5 = [];
this.form = {
id: null,
proCode: null,
proNo: null,
checkInformationFiles: null,
preparationMeasuresFiles:null,
sectionName: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
proCode: null,
proNo: null,
approvalOpinions: null,
approvalTime: null,
sectionName: null,
sectionCode:null,
checkInformationFiles: null,
preparationMeasuresFiles:null,
},
cv: {
name: "sectionName",
type: "like",
value: 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.proNo = this.proNo;
this.form.proCode = this.proCode;
this.open = true;
this.title = "添加施工准备信息";
},
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getOrder(id).then((response) => {
this.form = response.data;
if (this.form.preparationMeasuresFiles) {
this.fileList1 = JSON.parse(this.form.preparationMeasuresFiles);
}
if (this.form.checkInformationFiles) {
this.fileList2 = JSON.parse(this.form.checkInformationFiles);
}
// if (this.form.workCommencementOrder3) {
// this.fileList3 = JSON.parse(this.form.workCommencementOrder3);
// }
// if (this.form.workCommencementOrder4) {
// this.fileList4 = JSON.parse(this.form.workCommencementOrder4);
// }
// if (this.form.workCommencementOrder5) {
// this.fileList5 = JSON.parse(this.form.workCommencementOrder5);
// }
});
this.open = true;
this.title = "修改施工准备信息";
},
submitForm() {
this.form.preparationMeasuresFiles = this.fileList1.length
? JSON.stringify(this.fileList1)
: null;
this.form.checkInformationFiles = this.fileList2.length
? JSON.stringify(this.fileList2)
: null;
this.form.workCommencementOrder3 = this.fileList3.length
? JSON.stringify(this.fileList3)
: null;
this.form.workCommencementOrder4 = this.fileList4.length
? JSON.stringify(this.fileList4)
: null;
this.form.workCommencementOrder5 = this.fileList5.length
? JSON.stringify(this.fileList5)
: null;
// this.form.workCommencementOrder1 = JSON.stringify(this.fileList1);
// this.form.workCommencementOrder2 = JSON.stringify(this.fileList2);
// this.form.workCommencementOrder3 = JSON.stringify(this.fileList3);
// this.form.workCommencementOrder4 = JSON.stringify(this.fileList4);
// this.form.workCommencementOrder5 = JSON.stringify(this.fileList5);
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateOrder(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addOrder(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
cancel() {
// this.$router.back();
this.open = false;
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delOrder(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload1(_, fileList) {
console.log("fileList", fileList);
this.fileList1.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList1", this.fileList1);
},
handleOpinionRemove1(file, fileList) {
// console.log(file, fileList1);
let index = this.fileList1.findIndex((item) => item.uid === file.uid);
//
this.fileList1.splice(index, 1);
},
submitOpinionUpload2(_, fileList) {
console.log("fileList", fileList);
this.fileList2.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList1", this.fileList1);
},
handleOpinionRemove2(file, fileList) {
// console.log(file, fileList2);
let index = this.fileList2.findIndex((item) => item.uid === file.uid);
//
this.fileList2.splice(index, 1);
},
submitOpinionUpload3(_, fileList) {
console.log("fileList", fileList);
this.fileList3.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList3", this.fileList3);
},
handleOpinionRemove3(file, fileList) {
// console.log(file, fileList);
let index = this.fileList3.findIndex((item) => item.uid === file.uid);
//
this.fileList3.splice(index, 1);
},
submitOpinionUpload4(_, fileList) {
console.log("fileList", fileList);
this.fileList4.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList4", this.fileList4);
},
handleOpinionRemove4(file, fileList) {
// console.log(file, fileList);
let index = this.fileList4.findIndex((item) => item.uid === file.uid);
//
this.fileList4.splice(index, 1);
},
submitOpinionUpload5(_, fileList) {
console.log("fileList", fileList);
this.fileList5.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList5", this.fileList5);
},
handleOpinionRemove5(file, fileList) {
// console.log(file, fileList);
let index = this.fileList5.findIndex((item) => item.uid === file.uid);
//
this.fileList5.splice(index, 1);
},
downloadFile2(info, index) {
console.log(info);
this.handleOpinionPreview(info);
},
//
handleOpinionPreview(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleOpinionPreview2(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleOpinionExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeOpinionRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
::v-deep {
.el-dialog {
margin-top: 2vh !important;
}
}
.listTitle {
font-size: 14px;
padding-left: 10px;
padding-right: 30px;
margin: 20px 0;
border-left: 2px solid #36b29e;
display: flex;
justify-content: space-between;
span:nth-child(1) {
font-weight: bold;
}
.addBtn {
color: #36b29e;
cursor: pointer;
}
.addBtn:hover {
color: #31a08e;
}
}
.listTitle:nth-child(1) {
margin-top: 0;
// border-left: 0;
}
</style>

141
jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/orgDesign.vue

@ -91,15 +91,38 @@
min-width="120"
/>
<el-table-column
label="开工令文件"
label="施工组织设计文件"
align="center"
prop="workCommencementOrder1"
prop="constructionOrganizationFiles"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.workCommencementOrder1
scope.row.constructionOrganizationFiles
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile2(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="施工组织架构文件"
align="center"
prop="organizationalStructureFiles"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.organizationalStructureFiles
)"
:key="item + index"
>
@ -116,19 +139,19 @@
<el-table-column
label="申报时间"
align="center"
prop="reportTime1"
prop="reportingTime"
min-width="120"
/>
<el-table-column
label="审批时间"
align="center"
prop="approvalTime1"
prop="approvalTime"
min-width="120"
/>
<el-table-column
label="批复意见"
align="center"
prop="approvalOpinion1"
prop="approvalOpinions"
min-width="120"
/>
<el-table-column
@ -228,10 +251,39 @@
</el-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="施工组织设计" prop="organizationalStructureFiles">
<!-- <el-input
v-model="form.workCommencementOrder1"
placeholder="请输入意见附件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handleOpinionPreview2"
:on-remove="handleOpinionRemove2"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload2"
:file-list="fileList2"
>
<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="reportTime1">
<el-form-item label="申报时间" prop="reportingTime">
<el-date-picker
v-model="form.reportTime1"
v-model="form.reportingTime"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
@ -242,9 +294,9 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime1">
<el-form-item label="审批时间" prop="approvalTime">
<el-date-picker
v-model="form.approvalTime1"
v-model="form.approvalTime"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
@ -255,9 +307,9 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion1">
<el-form-item label="批复意见" prop="approvalOpinions">
<el-input
v-model="form.approvalOpinion1"
v-model="form.approvalOpinions"
placeholder="请输入批复意见"
type="textarea"
></el-input>
@ -563,23 +615,25 @@ export default {
},
},
//
form: {},
form: {
},
preMsg: {},
//
rules: {
sectionName: [
{ required: true, message: "请选择标段名称", trigger: "change" },
],
workCommencementOrder1: [
workCommencementOrder: [
{ required: true, message: "请上传开工令文件", trigger: "blur" },
],
reportTime1: [
reportingTime: [
{ required: true, message: "请选择申报时间", trigger: "blur" },
],
approvalTime1: [
approvalTime: [
{ required: true, message: "请选择审批时间", trigger: "blur" },
],
approvalOpinion1: [
approvalOpinion: [
{ required: true, message: "请输入批复意见", trigger: "blur" },
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
@ -706,30 +760,30 @@ export default {
const id = row.id || this.ids;
getOrg(id).then((response) => {
this.form = response.data;
if (this.form.workCommencementOrder1) {
this.fileList1 = JSON.parse(this.form.workCommencementOrder1);
}
if (this.form.workCommencementOrder2) {
this.fileList2 = JSON.parse(this.form.workCommencementOrder2);
}
if (this.form.workCommencementOrder3) {
this.fileList3 = JSON.parse(this.form.workCommencementOrder3);
if (this.form.constructionOrganizationFiles) {
this.fileList1 = JSON.parse(this.form.constructionOrganizationFiles);
}
if (this.form.workCommencementOrder4) {
this.fileList4 = JSON.parse(this.form.workCommencementOrder4);
}
if (this.form.workCommencementOrder5) {
this.fileList5 = JSON.parse(this.form.workCommencementOrder5);
if (this.form.organizationalStructureFiles) {
this.fileList2 = JSON.parse(this.form.organizationalStructureFiles);
}
// if (this.form.workCommencementOrder3) {
// this.fileList3 = JSON.parse(this.form.workCommencementOrder3);
// }
// if (this.form.workCommencementOrder4) {
// this.fileList4 = JSON.parse(this.form.workCommencementOrder4);
// }
// if (this.form.workCommencementOrder5) {
// this.fileList5 = JSON.parse(this.form.workCommencementOrder5);
// }
});
this.open = true;
this.title = "修改施工准备信息";
},
submitForm() {
this.form.workCommencementOrder1 = this.fileList1.length
this.form.constructionOrganizationFiles = this.fileList1.length
? JSON.stringify(this.fileList1)
: null;
this.form.workCommencementOrder2 = this.fileList2.length
this.form.organizationalStructureFiles = this.fileList2.length
? JSON.stringify(this.fileList2)
: null;
this.form.workCommencementOrder3 = this.fileList3.length
@ -783,7 +837,7 @@ export default {
type: "warning",
})
.then(function () {
return delMeas(ids);
return delOrg(ids);
})
.then(() => {
this.getList();
@ -814,6 +868,9 @@ export default {
this.fileList1.splice(index, 1);
},
submitOpinionUpload2(_, fileList) {
console.log("fileList", fileList);
this.fileList2.push({
@ -907,6 +964,24 @@ export default {
URL.revokeObjectURL(a.href); //URL
});
},
handleOpinionPreview2(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleOpinionExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${

949
jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/preparationForConstruction.vue

@ -0,0 +1,949 @@
<template>
<!-- 施工准备 -->
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="标段名称" prop="sectionName">
<el-input
v-model="queryParams.cv.value"
placeholder="请输入标段名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
>
<el-button
type="primary"
slot="append"
icon="el-icon-search"
size="small"
@click="handleQuery"
></el-button>
</el-input>
</el-form-item>
<el-form-item>
<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="['build:sgzb: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="['build:sgzb: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="['build:sgzb:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="infoList"
@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="sectionName"
min-width="120"
/>
<el-table-column
label="开工令文件"
align="center"
prop="workCommencementOrder1"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.workCommencementOrder1
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile2(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="申报时间"
align="center"
prop="reportTime1"
min-width="120"
/>
<el-table-column
label="审批时间"
align="center"
prop="approvalTime1"
min-width="120"
/>
<el-table-column
label="批复意见"
align="center"
prop="approvalOpinion1"
min-width="120"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
min-width="180"
fixed="right"
>
<template slot-scope="scope">
<!-- <el-button
size="mini"
type="text"
icon="el-icon-view"
@click="viewInfo(scope.row)"
v-hasPermi="['build:sgzb:view']"
>查看</el-button
> -->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:sgzb:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:sgzb: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"
label-position="top"
>
<!-- ===============工程开工令==================== -->
<!-- <div class="listTitle" style="margin-top: 0">
<span>工程开工令</span>
</div> -->
<el-col :span="24">
<el-form-item label="标段名称" prop="sectionName">
<choose-section :form="form" :proCode="proCode" :proNo="proNo" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="开工令文件" prop="workCommencementOrder1">
<!-- <el-input
v-model="form.workCommencementOrder1"
placeholder="请输入意见附件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove1"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload1"
:file-list="fileList1"
>
<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="reportTime1">
<el-date-picker
v-model="form.reportTime1"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择申报时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime1">
<el-date-picker
v-model="form.approvalTime1"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择审批时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion1">
<el-input
v-model="form.approvalOpinion1"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col>
<!-- ===============施工组织设计==================== -->
<!-- <div class="listTitle">
<span>施工组织设计</span>
</div>
<el-col :span="24">
<el-form-item
label="施工组织设计附件"
prop="workCommencementOrder2"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove2"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload2"
:file-list="fileList2"
>
<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="reportTime2">
<el-date-picker
v-model="form.reportTime2"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime2">
<el-date-picker
v-model="form.approvalTime2"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion2">
<el-input
v-model="form.approvalOpinion2"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============施工准备措施==================== -->
<!-- <div class="listTitle">
<span>施工准备措施</span>
</div>
<el-col :span="24">
<el-form-item
label="施工准备措施附件"
prop="workCommencementOrder3"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove3"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload3"
:file-list="fileList3"
>
<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="24">
<el-form-item label="施工准备措施内容" prop="approvalOpinion3">
<el-input
v-model="form.approvalOpinion3"
placeholder="请输入施工准备措施内容"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============施工准备措施检查==================== -->
<!-- <div class="listTitle">
<span>施工准备措施检查</span>
</div>
<el-col :span="24">
<el-form-item
label="施工准备措施检查附件"
prop="workCommencementOrder4"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList4')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove4"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload4"
:file-list="fileList4"
>
<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="24">
<el-form-item label="批复意见" prop="approvalOpinion4">
<el-input
v-model="form.approvalOpinion4"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============项目开工文件==================== -->
<!-- <div class="listTitle">
<span>项目开工文件</span>
</div>
<el-col :span="24">
<el-form-item label="项目开工文件" prop="workCommencementOrder5">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList5')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove5"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload5"
:file-list="fileList5"
>
<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="reportTime5">
<el-date-picker
v-model="form.reportTime5"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime5">
<el-date-picker
v-model="form.approvalTime5"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion5">
<el-input
v-model="form.approvalOpinion5"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
</el-form>
<!-- <div class="btnList">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div> -->
</el-row>
<div class="dialog-footer" slot="footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listMeas,
getMeas,
delMeas,
addMeas,
updateMeas,
exportMeas,
} from "@/api/build/meas";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import chooseSection from "../../components/chooseSection.vue";
export default {
components: { chooseSection },
name: "Meas",
props: ["proNo", "proCode"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
viewTitle: "",
//
open: false,
viewOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
id: null,
proCode: null,
proNo: null,
workCommencementOrder1: null,
reportTime1: null,
approvalTime1: null,
approvalOpinion1: null,
sectionName: null,
},
cv: {
name: "sectionName",
type: "like",
value: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
//
form: {},
preMsg: {},
//
rules: {
sectionName: [
{ required: true, message: "请选择标段名称", trigger: "change" },
],
workCommencementOrder1: [
{ required: true, message: "请上传开工令文件", trigger: "blur" },
],
reportTime1: [
{ required: true, message: "请选择申报时间", trigger: "blur" },
],
approvalTime1: [
{ required: true, message: "请选择审批时间", trigger: "blur" },
],
approvalOpinion1: [
{ required: true, message: "请输入批复意见", trigger: "blur" },
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion2: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion3: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion4: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion5: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
fileList2: [],
fileList3: [],
fileList4: [],
fileList5: [],
infoList: [],
};
},
created() {
this.getList();
},
methods: {
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.proCode = null
listMeas(this.queryParams).then((response) => {
this.infoList = response.records;
// console.log("responseresponse", response);
// if (response.records[0]) {
// this.preMsg = response.records[0];
// }
this.total = response.total;
this.loading = false;
});
},
//
reset() {
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.fileList4 = [];
this.fileList5 = [];
this.form = {
id: null,
proCode: null,
proNo: null,
workCommencementOrder1: null,
reportTime1: null,
approvalTime1: null,
approvalOpinion1: null,
sectionName: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
proCode: null,
proNo: null,
workCommencementOrder1: null,
reportTime1: null,
approvalTime1: null,
approvalOpinion1: null,
sectionName: null,
},
cv: {
name: "sectionName",
type: "like",
value: 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.proNo = this.proNo;
this.form.proCode = this.proCode;
this.open = true;
this.title = "添加施工准备信息";
},
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getMeas(id).then((response) => {
this.form = response.data;
if (this.form.workCommencementOrder1) {
this.fileList1 = JSON.parse(this.form.workCommencementOrder1);
}
if (this.form.workCommencementOrder2) {
this.fileList2 = JSON.parse(this.form.workCommencementOrder2);
}
if (this.form.workCommencementOrder3) {
this.fileList3 = JSON.parse(this.form.workCommencementOrder3);
}
if (this.form.workCommencementOrder4) {
this.fileList4 = JSON.parse(this.form.workCommencementOrder4);
}
if (this.form.workCommencementOrder5) {
this.fileList5 = JSON.parse(this.form.workCommencementOrder5);
}
});
this.open = true;
this.title = "修改施工准备信息";
},
submitForm() {
this.form.workCommencementOrder1 = this.fileList1.length
? JSON.stringify(this.fileList1)
: null;
this.form.workCommencementOrder2 = this.fileList2.length
? JSON.stringify(this.fileList2)
: null;
this.form.workCommencementOrder3 = this.fileList3.length
? JSON.stringify(this.fileList3)
: null;
this.form.workCommencementOrder4 = this.fileList4.length
? JSON.stringify(this.fileList4)
: null;
this.form.workCommencementOrder5 = this.fileList5.length
? JSON.stringify(this.fileList5)
: null;
// this.form.workCommencementOrder1 = JSON.stringify(this.fileList1);
// this.form.workCommencementOrder2 = JSON.stringify(this.fileList2);
// this.form.workCommencementOrder3 = JSON.stringify(this.fileList3);
// this.form.workCommencementOrder4 = JSON.stringify(this.fileList4);
// this.form.workCommencementOrder5 = JSON.stringify(this.fileList5);
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateMeas(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addMeas(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
cancel() {
// this.$router.back();
this.open = false;
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delMeas(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload1(_, fileList) {
console.log("fileList", fileList);
this.fileList1.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList1", this.fileList1);
},
handleOpinionRemove1(file, fileList) {
// console.log(file, fileList1);
let index = this.fileList1.findIndex((item) => item.uid === file.uid);
//
this.fileList1.splice(index, 1);
},
submitOpinionUpload2(_, fileList) {
console.log("fileList", fileList);
this.fileList2.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList1", this.fileList1);
},
handleOpinionRemove2(file, fileList) {
// console.log(file, fileList2);
let index = this.fileList2.findIndex((item) => item.uid === file.uid);
//
this.fileList2.splice(index, 1);
},
submitOpinionUpload3(_, fileList) {
console.log("fileList", fileList);
this.fileList3.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList3", this.fileList3);
},
handleOpinionRemove3(file, fileList) {
// console.log(file, fileList);
let index = this.fileList3.findIndex((item) => item.uid === file.uid);
//
this.fileList3.splice(index, 1);
},
submitOpinionUpload4(_, fileList) {
console.log("fileList", fileList);
this.fileList4.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList4", this.fileList4);
},
handleOpinionRemove4(file, fileList) {
// console.log(file, fileList);
let index = this.fileList4.findIndex((item) => item.uid === file.uid);
//
this.fileList4.splice(index, 1);
},
submitOpinionUpload5(_, fileList) {
console.log("fileList", fileList);
this.fileList5.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList5", this.fileList5);
},
handleOpinionRemove5(file, fileList) {
// console.log(file, fileList);
let index = this.fileList5.findIndex((item) => item.uid === file.uid);
//
this.fileList5.splice(index, 1);
},
downloadFile2(info, index) {
console.log(info);
this.handleOpinionPreview(info);
},
//
handleOpinionPreview(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleOpinionExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeOpinionRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
::v-deep {
.el-dialog {
margin-top: 2vh !important;
}
}
.listTitle {
font-size: 14px;
padding-left: 10px;
padding-right: 30px;
margin: 20px 0;
border-left: 2px solid #36b29e;
display: flex;
justify-content: space-between;
span:nth-child(1) {
font-weight: bold;
}
.addBtn {
color: #36b29e;
cursor: pointer;
}
.addBtn:hover {
color: #31a08e;
}
}
.listTitle:nth-child(1) {
margin-top: 0;
// border-left: 0;
}
</style>

949
jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/startUpDocument.vue

@ -0,0 +1,949 @@
<template>
<!-- 施工准备 -->
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="标段名称" prop="sectionName">
<el-input
v-model="queryParams.cv.value"
placeholder="请输入标段名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
>
<el-button
type="primary"
slot="append"
icon="el-icon-search"
size="small"
@click="handleQuery"
></el-button>
</el-input>
</el-form-item>
<el-form-item>
<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="['build:sgzb: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="['build:sgzb: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="['build:sgzb:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="infoList"
@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="sectionName"
min-width="120"
/>
<el-table-column
label="开工令文件"
align="center"
prop="workCommencementOrder1"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.workCommencementOrder1
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile2(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="申报时间"
align="center"
prop="reportTime1"
min-width="120"
/>
<el-table-column
label="审批时间"
align="center"
prop="approvalTime1"
min-width="120"
/>
<el-table-column
label="批复意见"
align="center"
prop="approvalOpinion1"
min-width="120"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
min-width="180"
fixed="right"
>
<template slot-scope="scope">
<!-- <el-button
size="mini"
type="text"
icon="el-icon-view"
@click="viewInfo(scope.row)"
v-hasPermi="['build:sgzb:view']"
>查看</el-button
> -->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:sgzb:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:sgzb: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"
label-position="top"
>
<!-- ===============工程开工令==================== -->
<!-- <div class="listTitle" style="margin-top: 0">
<span>工程开工令</span>
</div> -->
<el-col :span="24">
<el-form-item label="标段名称" prop="sectionName">
<choose-section :form="form" :proCode="proCode" :proNo="proNo" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="开工令文件" prop="workCommencementOrder1">
<!-- <el-input
v-model="form.workCommencementOrder1"
placeholder="请输入意见附件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove1"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload1"
:file-list="fileList1"
>
<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="reportTime1">
<el-date-picker
v-model="form.reportTime1"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择申报时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime1">
<el-date-picker
v-model="form.approvalTime1"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择审批时间"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion1">
<el-input
v-model="form.approvalOpinion1"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col>
<!-- ===============施工组织设计==================== -->
<!-- <div class="listTitle">
<span>施工组织设计</span>
</div>
<el-col :span="24">
<el-form-item
label="施工组织设计附件"
prop="workCommencementOrder2"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove2"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload2"
:file-list="fileList2"
>
<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="reportTime2">
<el-date-picker
v-model="form.reportTime2"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime2">
<el-date-picker
v-model="form.approvalTime2"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion2">
<el-input
v-model="form.approvalOpinion2"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============施工准备措施==================== -->
<!-- <div class="listTitle">
<span>施工准备措施</span>
</div>
<el-col :span="24">
<el-form-item
label="施工准备措施附件"
prop="workCommencementOrder3"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove3"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload3"
:file-list="fileList3"
>
<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="24">
<el-form-item label="施工准备措施内容" prop="approvalOpinion3">
<el-input
v-model="form.approvalOpinion3"
placeholder="请输入施工准备措施内容"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============施工准备措施检查==================== -->
<!-- <div class="listTitle">
<span>施工准备措施检查</span>
</div>
<el-col :span="24">
<el-form-item
label="施工准备措施检查附件"
prop="workCommencementOrder4"
>
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList4')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove4"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload4"
:file-list="fileList4"
>
<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="24">
<el-form-item label="批复意见" prop="approvalOpinion4">
<el-input
v-model="form.approvalOpinion4"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
<!-- ===============项目开工文件==================== -->
<!-- <div class="listTitle">
<span>项目开工文件</span>
</div>
<el-col :span="24">
<el-form-item label="项目开工文件" prop="workCommencementOrder5">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList5')"
:on-preview="handleOpinionPreview"
:on-remove="handleOpinionRemove5"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="submitOpinionUpload5"
:file-list="fileList5"
>
<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="reportTime5">
<el-date-picker
v-model="form.reportTime5"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime5">
<el-date-picker
v-model="form.approvalTime5"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"
style="width: 100%"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="批复意见" prop="approvalOpinion5">
<el-input
v-model="form.approvalOpinion5"
placeholder="请输入批复意见"
type="textarea"
></el-input>
</el-form-item>
</el-col> -->
</el-form>
<!-- <div class="btnList">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div> -->
</el-row>
<div class="dialog-footer" slot="footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listMeas,
getMeas,
delMeas,
addMeas,
updateMeas,
exportMeas,
} from "@/api/build/meas";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import chooseSection from "../../components/chooseSection.vue";
export default {
components: { chooseSection },
name: "Meas",
props: ["proNo", "proCode"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
viewTitle: "",
//
open: false,
viewOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
id: null,
proCode: null,
proNo: null,
workCommencementOrder1: null,
reportTime1: null,
approvalTime1: null,
approvalOpinion1: null,
sectionName: null,
},
cv: {
name: "sectionName",
type: "like",
value: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
//
form: {},
preMsg: {},
//
rules: {
sectionName: [
{ required: true, message: "请选择标段名称", trigger: "change" },
],
workCommencementOrder1: [
{ required: true, message: "请上传开工令文件", trigger: "blur" },
],
reportTime1: [
{ required: true, message: "请选择申报时间", trigger: "blur" },
],
approvalTime1: [
{ required: true, message: "请选择审批时间", trigger: "blur" },
],
approvalOpinion1: [
{ required: true, message: "请输入批复意见", trigger: "blur" },
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion2: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion3: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion4: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
approvalOpinion5: [
{ max: 500, message: "字符长度最大为500", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
fileList2: [],
fileList3: [],
fileList4: [],
fileList5: [],
infoList: [],
};
},
created() {
this.getList();
},
methods: {
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.proCode = null
listMeas(this.queryParams).then((response) => {
this.infoList = response.records;
// console.log("responseresponse", response);
// if (response.records[0]) {
// this.preMsg = response.records[0];
// }
this.total = response.total;
this.loading = false;
});
},
//
reset() {
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.fileList4 = [];
this.fileList5 = [];
this.form = {
id: null,
proCode: null,
proNo: null,
workCommencementOrder1: null,
reportTime1: null,
approvalTime1: null,
approvalOpinion1: null,
sectionName: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
proCode: null,
proNo: null,
workCommencementOrder1: null,
reportTime1: null,
approvalTime1: null,
approvalOpinion1: null,
sectionName: null,
},
cv: {
name: "sectionName",
type: "like",
value: 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.proNo = this.proNo;
this.form.proCode = this.proCode;
this.open = true;
this.title = "添加施工准备信息";
},
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getMeas(id).then((response) => {
this.form = response.data;
if (this.form.workCommencementOrder1) {
this.fileList1 = JSON.parse(this.form.workCommencementOrder1);
}
if (this.form.workCommencementOrder2) {
this.fileList2 = JSON.parse(this.form.workCommencementOrder2);
}
if (this.form.workCommencementOrder3) {
this.fileList3 = JSON.parse(this.form.workCommencementOrder3);
}
if (this.form.workCommencementOrder4) {
this.fileList4 = JSON.parse(this.form.workCommencementOrder4);
}
if (this.form.workCommencementOrder5) {
this.fileList5 = JSON.parse(this.form.workCommencementOrder5);
}
});
this.open = true;
this.title = "修改施工准备信息";
},
submitForm() {
this.form.workCommencementOrder1 = this.fileList1.length
? JSON.stringify(this.fileList1)
: null;
this.form.workCommencementOrder2 = this.fileList2.length
? JSON.stringify(this.fileList2)
: null;
this.form.workCommencementOrder3 = this.fileList3.length
? JSON.stringify(this.fileList3)
: null;
this.form.workCommencementOrder4 = this.fileList4.length
? JSON.stringify(this.fileList4)
: null;
this.form.workCommencementOrder5 = this.fileList5.length
? JSON.stringify(this.fileList5)
: null;
// this.form.workCommencementOrder1 = JSON.stringify(this.fileList1);
// this.form.workCommencementOrder2 = JSON.stringify(this.fileList2);
// this.form.workCommencementOrder3 = JSON.stringify(this.fileList3);
// this.form.workCommencementOrder4 = JSON.stringify(this.fileList4);
// this.form.workCommencementOrder5 = JSON.stringify(this.fileList5);
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {
updateMeas(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addMeas(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
}
});
}
}
});
},
cancel() {
// this.$router.back();
this.open = false;
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
if (ids) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delMeas(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload1(_, fileList) {
console.log("fileList", fileList);
this.fileList1.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList1", this.fileList1);
},
handleOpinionRemove1(file, fileList) {
// console.log(file, fileList1);
let index = this.fileList1.findIndex((item) => item.uid === file.uid);
//
this.fileList1.splice(index, 1);
},
submitOpinionUpload2(_, fileList) {
console.log("fileList", fileList);
this.fileList2.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList1", this.fileList1);
},
handleOpinionRemove2(file, fileList) {
// console.log(file, fileList2);
let index = this.fileList2.findIndex((item) => item.uid === file.uid);
//
this.fileList2.splice(index, 1);
},
submitOpinionUpload3(_, fileList) {
console.log("fileList", fileList);
this.fileList3.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList3", this.fileList3);
},
handleOpinionRemove3(file, fileList) {
// console.log(file, fileList);
let index = this.fileList3.findIndex((item) => item.uid === file.uid);
//
this.fileList3.splice(index, 1);
},
submitOpinionUpload4(_, fileList) {
console.log("fileList", fileList);
this.fileList4.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList4", this.fileList4);
},
handleOpinionRemove4(file, fileList) {
// console.log(file, fileList);
let index = this.fileList4.findIndex((item) => item.uid === file.uid);
//
this.fileList4.splice(index, 1);
},
submitOpinionUpload5(_, fileList) {
console.log("fileList", fileList);
this.fileList5.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
// console.log("this.fileList5", this.fileList5);
},
handleOpinionRemove5(file, fileList) {
// console.log(file, fileList);
let index = this.fileList5.findIndex((item) => item.uid === file.uid);
//
this.fileList5.splice(index, 1);
},
downloadFile2(info, index) {
console.log(info);
this.handleOpinionPreview(info);
},
//
handleOpinionPreview(file) {
// console.log(file);
getFileStream({ fileName: file.fileName }).then((res) => {
const blob = new Blob([res], {
// type
// application/xlsx application/zip
type: "application/xlsx",
}); //excel,pdf
const href = URL.createObjectURL(blob); //URLblob
const a = document.createElement("a"); //a
a.style.display = "none";
a.href = href; //
a.download = file.name; //
a.click(); //
URL.revokeObjectURL(a.href); //URL
});
},
handleOpinionExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeOpinionRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
::v-deep {
.el-dialog {
margin-top: 2vh !important;
}
}
.listTitle {
font-size: 14px;
padding-left: 10px;
padding-right: 30px;
margin: 20px 0;
border-left: 2px solid #36b29e;
display: flex;
justify-content: space-between;
span:nth-child(1) {
font-weight: bold;
}
.addBtn {
color: #36b29e;
cursor: pointer;
}
.addBtn:hover {
color: #31a08e;
}
}
.listTitle:nth-child(1) {
margin-top: 0;
// border-left: 0;
}
</style>

16
jwtech-admin-page/src/views/welcome/index.vue

@ -231,6 +231,7 @@ export default {
zdTotal:0,
msTotal:0,
total:0,
queryParams: {
pageNum: 1,
pageSize: 5,
@ -456,7 +457,16 @@ export default {
});
},
barInit(){
const progressPlanValues = Object.values(this.sourceFound).map(obj => obj.progressPlan);
const actualValues = Object.values(this.sourceFound).map(obj => obj.actual);
const maxProgressPlan = Math.max(...progressPlanValues);
const maxActual = Math.max(...actualValues);
// yAxis max
const yAxisMax = Math.max(maxProgressPlan, maxActual);
let chartDom = this.$refs.bar;
let myChart = echarts.init(chartDom);
let option = {
@ -483,7 +493,7 @@ export default {
axisLine: {
show: false // X 线
},
axisLabel: { interval: 2 },
axisLabel: { interval: 0,rotate: 45 },
type: 'category',
data:this.adcd.map(item=>codeToText[item]),
axisPointer: {
@ -505,8 +515,8 @@ export default {
type: 'value',
name: '金额/万元',
min: 0,
max: 10000,
interval: 1000,
max: yAxisMax,
interval: yAxisMax/10,
}
],
series: [

17
jwtech-admin/src/main/java/com/kms/config/WaterRequestUtil.java

@ -102,8 +102,11 @@ public class WaterRequestUtil {
*/
private void setHead(HttpRequest httpRequest,String serviceId,String appsecret){
String timestamp = String.valueOf(new Date().getTime());
String tifTimestamp = String.valueOf(new Date().getTime() / 1000);
String xTifPaasid=paasId;
String nonce = IdUtil.fastSimpleUUID();
String signature = timestamp + paasToken + nonce + timestamp;
String signature = tifTimestamp + paasToken + nonce + tifTimestamp;
System.out.println(signature);
try {
signature = SHACoder.encodeSHA256Hex(signature).toUpperCase();
} catch (Exception e) {
@ -112,13 +115,19 @@ public class WaterRequestUtil {
httpRequest
.header("x-tsp-paasid",paasId)
.header("x-tsp-signature",signature)
.header("x-tsp-timestamp",timestamp)
.header("x-tsp-timestamp",tifTimestamp)
.header("x-tsp-nonce", nonce)
.header("x-tsp-serviceid",serviceId)
.header("x-tsp-appsecret",appsecret);
.header("x-tif-paasid",paasId)
.header("x-tif-signature",signature)
.header("x-tif-timestamp",tifTimestamp)
.header("x-tif-nonce",nonce);
// .header("x-tsp-serviceid",serviceId)
// .header("x-tsp-appsecret",appsecret);
}
public HttpRequest createGet(String url,String serviceId,String appsecret){
HttpRequest httpRequest = HttpRequest.get(url);
setHead(httpRequest,serviceId,appsecret);

19
jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java

@ -169,7 +169,6 @@ public class SysLoginController extends BaseController {
// 用户信息
SysUser user = UserUtils.getUser();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getId());
// List<SysMenu> menus = menuService.selectMenuTreeByUserId("1");
return AjaxResult.success(menuService.buildMenus(menus));
}
@ -228,24 +227,6 @@ public class SysLoginController extends BaseController {
} catch (InterruptedException e) {
e.printStackTrace();
}
// if(StringUtils.isEmpty(page)){
// List<SysMenu> menus = menuService.selectMenuTreeByUserId(sysUser.getId());
// List<RouterVo> routerVos = menuService.buildMenus(menus);
// StringBuffer stringBuffer = new StringBuffer();
// for (RouterVo routerVo : routerVos) {
// stringBuffer.append("/"+routerVo.getPath());
// List<RouterVo> children = routerVo.getChildren();
// if(CollectionUtil.isEmpty(children)){
// continue;
// }else {
// RouterVo vo = children.get(0);
// List<RouterVo> childrenTwo = vo.getChildren();
// if(CollectionUtil.isEmpty(childrenTwo)){
//
// }
// }
// }
// }
RedirectView redirectView=null;
redirectView = new RedirectView("https://210.76.82.26/jgThinking/#/singleLogin" + "?token=" + tokenValue + "&page=" + page);

12
jwtech-admin/src/main/resources/application-test.yml

@ -261,7 +261,7 @@ water:
systemName: 水工程应用-水利工程建设管理模块
#请求测试环境网关
# url: http://19.25.35.204:31190/data_center/gateway/api
url: http://19.25.40.10:31190/data_center/gateway/portal
url: http://19.25.40.186/ebus/1606128918164250625
#应用token
paasToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzeXN0ZW1JZCI6IjE3MzI3MDMxMTE1NDc0ODIxMTQifQ.4oiD3WBwrxT5z8goAvA9O88vsYVxwaE-8vyQmWl7xbg
#应用id
@ -273,15 +273,15 @@ water:
singOnAppsecret: 92c8749c5a424758ba550f3cc79cf882
userUrl: ${water.url}/uaa/auth/user
usersUrl: ${water.url}/usrc/open-api/user/page
usersUrl: ${water.url}/services/am-usrc/usrc/open-api/user/page
# 组织
orgUrl: ${water.url}/usrc/open-api/org/orgPage
orgUrl: ${water.url}/services/am-usrc/usrc/open-api/org/orgPage
# 业务系统
systemUrl: ${water.url}/usrc/open-api/system/list
systemUrl: ${water.url}/services/am-usrc/usrc/open-api/system/list
# 业务角色
businessRole: ${water.url}/usrc/open-api/role/page
businessRole: ${water.url}/services/am-usrc/usrc/open-api/role/page
# 用户资源
resourceUrl: ${water.url}/usrc/resource/build
resourceUrl: ${water.url}/services/am-usrc/usrc/resource/build
usersAppsecret: 97ba97908eca4624aa131f7530cc4d30
usersServiceId: DGSP_1606198353790349313

1
jwtech-system/src/main/java/com/kms/build/controller/BsSgcJsjdBuiAttendanceInformationController.java

@ -175,6 +175,7 @@ public class BsSgcJsjdBuiAttendanceInformationController extends BaseController
// .eq(BsSgcJsjdBuiRealName::getName, bsSgcJsjdBuiAttendanceInformationExcel.getWorkerName())
.eq(BsSgcJsjdBuiRealName::getProNo, proNo), false);
if (ObjectUtil.isEmpty(one)) {
stringList.add(new ExcelException(bsSgcJsjdBuiAttendanceInformationExcel.getWorkerName(), "农民工花名册不存在身份证信息" + bsSgcJsjdBuiAttendanceInformationExcel.getIdNo()));
} else {
bsSgcJsjdBuiAttendanceInformation.setName(one.getName());

4
jwtech-system/src/main/java/com/kms/build/domain/BsSgcJsjdBuiCommen.java

@ -32,6 +32,10 @@ public class BsSgcJsjdBuiCommen extends BaseEntity
@ApiModelProperty("开工备案编号")
private String constructionRegistrationNumber;
private String sectionName;
private String sectionCode;
/** 开工时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开工时间", width = 30, dateFormat = "yyyy-MM-dd")

14
jwtech-system/src/main/java/com/kms/build/domain/BsSgcJsjdBuiEngOrder.java

@ -15,23 +15,29 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.jianwei.common.core.domain.BaseEntity;
/**
* 工程施工令对象 bs_sgc_jsjd_bui_eng_order
* 施工准备措施对象 bs_sgc_jsjd_bui_eng_order
*
* @author kms
* @date 2023-10-20
*/
@TableName("bs_sgc_jsjd_bui_eng_order")
@Data
@ApiModel("工程施工令")
@ApiModel("施工准备措施")
public class BsSgcJsjdBuiEngOrder extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 施工令文件 */
@Excel(name = "施工令文件")
@ApiModelProperty("施工令文件")
@Excel(name = "开工文件")
@ApiModelProperty("开工文件")
private String constructionOrderDocuments;
/** 施工准备措施内容 */
private String preparationMeasuresFiles;
/** 施工准备措施检查信息 */
private String checkInformationFiles;
/** 申请人 */
@Excel(name = "申请人")
@ApiModelProperty("申请人")

3
jwtech-system/src/main/java/com/kms/build/domain/BsSgcJsjdBuiOrgDesign.java

@ -1,6 +1,8 @@
package com.kms.build.domain;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -30,6 +32,7 @@ public class BsSgcJsjdBuiOrgDesign extends BaseEntity
/** 施工组织设计文件附件 */
@Excel(name = "施工组织设计文件附件")
@ApiModelProperty("施工组织设计文件附件")
@TableField("CONSTRUCTION_ORGANIZATION__FILES")
private String constructionOrganizationFiles;
@ApiModelProperty("施工组织架构文件附件")

21
jwtech-system/src/main/java/com/kms/build/service/BsSgcjsjdBuiProInfoService.java

@ -44,10 +44,12 @@ import java.math.BigDecimal;
import java.time.Period;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
@ -882,8 +884,8 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM
@Autowired
private BsSgcJsjdBuiProgressPlanService bsSgcJsjdBuiProgressPlanService;
private Map<String, HashMap<String, BigDecimal>> map = new ConcurrentHashMap<>(); // 使用 ConcurrentHashMap 确保线程安全
public HashMap<String,HashMap<String,BigDecimal>>getSourceFundsNum(String year){
HashMap<String,HashMap<String,BigDecimal>>map=new HashMap<>();
SysUser sysUser = UserUtils.getUser();
String deptId = sysUser.getDeptId();
SysDept sysDept = sysDeptService.get(deptId);
@ -895,7 +897,7 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM
return new HashMap<>();
}
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(20, 20, 0, TimeUnit.SECONDS, new ArrayBlockingQueue<>(records.size()));
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 10, 0, TimeUnit.SECONDS, new ArrayBlockingQueue<>(records.size()));
for (BsSgcjsjdBuiProInfo bs:records){
threadPoolExecutor.execute(() -> {
if (StringUtils.isNotEmpty(bs.getAdcd()) && bs.getAdcd().length() >= 4) {
@ -930,16 +932,25 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM
}
});
}
// 关闭线程池
// 关闭线程池
threadPoolExecutor.shutdown();
// 等待所有线程完成
try {
threadPoolExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return map;
HashMap<String, HashMap<String, BigDecimal>> sortedMap = map.entrySet()
.stream()
.sorted((e1, e2) -> e2.getValue().get("actual").compareTo(e1.getValue().get("actual")))
.limit(10)
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(existing, replacement) -> existing,
LinkedHashMap::new // 保持插入顺序
));
return sortedMap;
}

2
jwtech-system/src/main/java/com/kms/earlyStage/service/SpecialProjectPreDesignService.java

@ -23,7 +23,7 @@ import com.kms.system.mapper.SysUserProMapper;
import com.kms.system.service.SysDeptService;
import com.kms.system.service.SysUserProService;
import com.kms.system.service.SysXzqhService;
import javafx.print.Collation;
//import javafx.print.Collation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jianwei.common.core.service.BaseService;

Loading…
Cancel
Save