Browse Source

Merge remote-tracking branch 'origin/kxc' into Initial-inspection

# Conflicts:
#	jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue
#	jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/index.vue
#	jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/startUpDocument.vue
#	jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/index.vue
Initial-inspection
zth 7 months ago
parent
commit
7c28adb6e2
  1. 53
      jwtech-admin-page/src/api/build/ledger.js
  2. 53
      jwtech-admin-page/src/api/build/objective.js
  3. 24
      jwtech-admin-page/src/api/build/person.js
  4. 53
      jwtech-admin-page/src/api/build/rectification.js
  5. 53
      jwtech-admin-page/src/api/enterprise/asset.js
  6. 53
      jwtech-admin-page/src/api/enterprise/badBehavior.js
  7. 53
      jwtech-admin-page/src/api/enterprise/goodBehavior.js
  8. 208
      jwtech-admin-page/src/views/build/institution/index.vue
  9. 370
      jwtech-admin-page/src/views/build/man/index.vue
  10. 544
      jwtech-admin-page/src/views/build/objective/index.vue
  11. 411
      jwtech-admin-page/src/views/build/person/index.vue
  12. 286
      jwtech-admin-page/src/views/build/score/index.vue
  13. 2
      jwtech-admin-page/src/views/building/peasantWorkerSystem/options/clockingIn.vue
  14. 20
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/dangerLedger.vue
  15. 728
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/dangerRegistration.vue
  16. 348
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/hiddenDangerRectificationLedger.vue
  17. 38
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue
  18. 40
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/missIdentification.vue
  19. 668
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/startUp.vue
  20. 345
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/riskAndHiddenDangerLedger.vue
  21. 65
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/safetyGoal.vue
  22. 750
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/assetCondition.vue
  23. 184
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/basePage.vue
  24. 405
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/badBehavior.vue
  25. 405
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/goodBehavior.vue
  26. 34
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/goodCredit.vue
  27. 35
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/index.vue
  28. 44
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/performanceRecord.vue
  29. 76
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/personnelBehavior.vue
  30. 2
      jwtech-admin-page/src/views/projectStatistics/projectProcess/projectAcceptance.vue
  31. 14
      jwtech-admin-page/src/views/projectStatistics/projectProcess/qualityControl/options/components/divAssess.vue
  32. 66
      jwtech-admin-page/src/views/welcome/index.vue
  33. 4
      jwtech-admin-page/vue.config.js
  34. 25
      jwtech-system/src/main/java/com/kms/build/service/BsSgcjsjdBuiProInfoService.java

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

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询 风险隐患台账列表
export function listLedger(query) {
return request({
url: '/build/ledger/list',
method: 'post',
data: query
})
}
// 查询 风险隐患台账详细
export function getLedger(id) {
return request({
url: '/build/ledger/' + id,
method: 'get'
})
}
// 新增 风险隐患台账
export function addLedger(data) {
return request({
url: '/build/ledger',
method: 'post',
data: data
})
}
// 修改 风险隐患台账
export function updateLedger(data) {
return request({
url: '/build/ledger',
method: 'put',
data: data
})
}
// 删除 风险隐患台账
export function delLedger(id) {
return request({
url: '/build/ledger/' + id,
method: 'delete'
})
}
// 导出 风险隐患台账
export function exportLedger(query) {
return request({
url: '/build/ledger/export',
method: 'get',
params: query
})
}

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

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询工程目标信息列表
export function listObjective(query) {
return request({
url: '/build/objective/list',
method: 'post',
data: query
})
}
// 查询工程目标信息详细
export function getObjective(id) {
return request({
url: '/build/objective/' + id,
method: 'get'
})
}
// 新增工程目标信息
export function addObjective(data) {
return request({
url: '/build/objective',
method: 'post',
data: data
})
}
// 修改工程目标信息
export function updateObjective(data) {
return request({
url: '/build/objective',
method: 'put',
data: data
})
}
// 删除工程目标信息
export function delObjective(id) {
return request({
url: '/build/objective/' + id,
method: 'delete'
})
}
// 导出工程目标信息
export function exportObjective(query) {
return request({
url: '/build/objective/export',
method: 'get',
params: query
})
}

24
jwtech-admin-page/src/api/build/person.js

@ -1,52 +1,52 @@
import request from '@/utils/request'
// 查询项目人员名单信息列表
// 查询项目安全生产管理机构人员信息列表
export function listPerson(query) {
return request({
url: '/build/proPerson/list',
url: '/build/person/list',
method: 'post',
data: query
})
}
// 查询项目人员名单信息详细
// 查询项目安全生产管理机构人员信息详细
export function getPerson(id) {
return request({
url: '/build/proPerson/' + id,
url: '/build/person/' + id,
method: 'get'
})
}
// 新增项目人员名单信息
// 新增项目安全生产管理机构人员信息
export function addPerson(data) {
return request({
url: '/build/proPerson',
url: '/build/person',
method: 'post',
data: data
})
}
// 修改项目人员名单信息
// 修改项目安全生产管理机构人员信息
export function updatePerson(data) {
return request({
url: '/build/proPerson',
url: '/build/person',
method: 'put',
data: data
})
}
// 删除项目人员名单信息
// 删除项目安全生产管理机构人员信息
export function delPerson(id) {
return request({
url: '/build/proPerson/' + id,
url: '/build/person/' + id,
method: 'delete'
})
}
// 导出项目人员名单信息
// 导出项目安全生产管理机构人员信息
export function exportPerson(query) {
return request({
url: '/build/proPerson/export',
url: '/build/person/export',
method: 'get',
params: query
})

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

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询隐患整改台账列表
export function listRectification(query) {
return request({
url: '/build/rectification/list',
method: 'post',
data: query
})
}
// 查询隐患整改台账详细
export function getRectification(id) {
return request({
url: '/build/rectification/' + id,
method: 'get'
})
}
// 新增隐患整改台账
export function addRectification(data) {
return request({
url: '/build/rectification',
method: 'post',
data: data
})
}
// 修改隐患整改台账
export function updateRectification(data) {
return request({
url: '/build/rectification',
method: 'put',
data: data
})
}
// 删除隐患整改台账
export function delRectification(id) {
return request({
url: '/build/rectification/' + id,
method: 'delete'
})
}
// 导出隐患整改台账
export function exportRectification(query) {
return request({
url: '/build/rectification/export',
method: 'get',
params: query
})
}

53
jwtech-admin-page/src/api/enterprise/asset.js

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询资产状况信息列表
export function listAsset(query) {
return request({
url: '/enterprise/asset/list',
method: 'post',
data: query
})
}
// 查询资产状况信息详细
export function getAsset(id) {
return request({
url: '/enterprise/asset/' + id,
method: 'get'
})
}
// 新增资产状况信息
export function addAsset(data) {
return request({
url: '/enterprise/asset',
method: 'post',
data: data
})
}
// 修改资产状况信息
export function updateAsset(data) {
return request({
url: '/enterprise/asset',
method: 'put',
data: data
})
}
// 删除资产状况信息
export function delAsset(id) {
return request({
url: '/enterprise/asset/' + id,
method: 'delete'
})
}
// 导出资产状况信息
export function exportAsset(query) {
return request({
url: '/enterprise/asset/export',
method: 'get',
params: query
})
}

53
jwtech-admin-page/src/api/enterprise/badBehavior.js

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询人员不良行为信息列表
export function listBadBehavior(query) {
return request({
url: '/enterprise/badBehavior/list',
method: 'post',
data: query
})
}
// 查询人员不良行为信息详细
export function getBadBehavior(id) {
return request({
url: '/enterprise/badBehavior/' + id,
method: 'get'
})
}
// 新增人员不良行为信息
export function addBadBehavior(data) {
return request({
url: '/enterprise/badBehavior',
method: 'post',
data: data
})
}
// 修改人员不良行为信息
export function updateBadBehavior(data) {
return request({
url: '/enterprise/badBehavior',
method: 'put',
data: data
})
}
// 删除人员不良行为信息
export function delBadBehavior(id) {
return request({
url: '/enterprise/badBehavior/' + id,
method: 'delete'
})
}
// 导出人员不良行为信息
export function exportBadBehavior(query) {
return request({
url: '/enterprise/badBehavior/export',
method: 'get',
params: query
})
}

53
jwtech-admin-page/src/api/enterprise/goodBehavior.js

@ -0,0 +1,53 @@
import request from '@/utils/request'
// 查询人员良好行为信息列表
export function listGoodBehavior(query) {
return request({
url: '/enterprise/goodBehavior/list',
method: 'post',
data: query
})
}
// 查询人员良好行为信息详细
export function getGoodBehavior(id) {
return request({
url: '/enterprise/goodBehavior/' + id,
method: 'get'
})
}
// 新增人员良好行为信息
export function addGoodBehavior(data) {
return request({
url: '/enterprise/goodBehavior',
method: 'post',
data: data
})
}
// 修改人员良好行为信息
export function updateGoodBehavior(data) {
return request({
url: '/enterprise/goodBehavior',
method: 'put',
data: data
})
}
// 删除人员良好行为信息
export function delGoodBehavior(id) {
return request({
url: '/enterprise/goodBehavior/' + id,
method: 'delete'
})
}
// 导出人员良好行为信息
export function exportGoodBehavior(query) {
return request({
url: '/enterprise/goodBehavior/export',
method: 'get',
params: query
})
}

208
jwtech-admin-page/src/views/build/institution/index.vue

@ -1,12 +1,10 @@
<template>
<!-- 项目安全生产管理机构信息-->
<div class="app-container">
<el-form
<div>
<!-- <el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="机构名称" prop="organizationName">
<el-input
@ -15,7 +13,15 @@
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 label="机构类型" prop="mechanismType">
<el-select
@ -34,7 +40,15 @@
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 label="机构负责单元工程" prop="unitEngineering">
<el-input
@ -43,7 +57,15 @@
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 label="项目编码" prop="proCode">
<el-input
@ -52,7 +74,15 @@
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 label="项目编号" prop="proNo">
<el-input
@ -61,7 +91,15 @@
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 label="创建人" prop="createUid">
<el-input
@ -70,7 +108,15 @@
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 label="创建时间" prop="createTime">
<el-date-picker
@ -91,7 +137,15 @@
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 label="更新时间" prop="updateTime">
<el-date-picker
@ -112,7 +166,15 @@
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
@ -126,7 +188,7 @@
>重置</el-button
>
</el-form-item>
</el-form>
</el-form> -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@ -135,21 +197,21 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['build:institution:add']"
v-hasPermi="['system:institution:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['build:institution:edit']"
v-hasPermi="['system:institution:edit']"
>修改</el-button
>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button
type="danger"
@ -157,20 +219,20 @@
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['build:institution:remove']"
v-hasPermi="['system:institution:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['build:institution:export']"
v-hasPermi="['system:institution:export']"
>导出</el-button
>
</el-col>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@ -182,54 +244,95 @@
:data="institutionList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<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="organizationName"
min-width="120"
/>
<el-table-column
label="机构类型"
align="center"
prop="mechanismType"
min-width="120"
/>
<el-table-column label="机构类型" align="center" prop="mechanismType" />
<el-table-column
label="上级机构名称"
align="center"
prop="parentOrganizationName"
min-width="120"
/>
<el-table-column
label="机构负责单元工程"
align="center"
prop="unitEngineering"
min-width="120"
/>
<el-table-column
label="项目编码"
align="center"
prop="proCode"
min-width="120"
/>
<el-table-column
label="项目编号"
align="center"
prop="proNo"
min-width="120"
/>
<el-table-column
label="创建人"
align="center"
prop="createUid"
min-width="120"
/>
<el-table-column label="项目编码" align="center" prop="proCode" />
<el-table-column label="项目编号" align="center" prop="proNo" />
<el-table-column label="创建人" align="center" prop="createUid" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="更新人" align="center" prop="updateUid" />
<el-table-column
label="更新人"
align="center"
prop="updateUid"
min-width="120"
/>
<el-table-column
label="更新时间"
align="center"
prop="updateTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="数源部门" align="center" prop="owerDept" />
<el-table-column
label="数源部门"
align="center"
prop="owerDept"
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
@ -237,7 +340,7 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:institution:edit']"
v-hasPermi="['system:institution:edit']"
>修改</el-button
>
<el-button
@ -245,7 +348,7 @@
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:institution:remove']"
v-hasPermi="['system:institution:remove']"
>删除</el-button
>
</template>
@ -261,7 +364,13 @@
/>
<!-- 添加或修改项目安全生产管理机构信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<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="organizationName">
<el-input
@ -270,7 +379,11 @@
/>
</el-form-item>
<el-form-item label="机构类型" prop="mechanismType">
<el-select v-model="form.mechanismType" placeholder="请选择机构类型">
<el-select
v-model="form.mechanismType"
placeholder="请选择机构类型"
style="width: 100%"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
@ -322,6 +435,7 @@ import {
export default {
name: "Institution",
props: ["proNo", "proCode"],
data() {
return {
//
@ -360,6 +474,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
@ -374,6 +495,7 @@ export default {
/** 查询项目安全生产管理机构信息列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listInstitution(this.queryParams).then((response) => {
this.institutionList = response.records;
this.total = response.total;
@ -422,6 +544,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
@ -461,6 +590,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
if (this.form.id != null) {
updateInstitution(this.form).then((response) => {
if (response.code === 200) {
@ -527,3 +657,11 @@ export default {
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

370
jwtech-admin-page/src/views/build/man/index.vue

@ -1,12 +1,10 @@
<template>
<!-- 安全目标信息-->
<div class="app-container">
<el-form
<div>
<!-- <el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="项目名称" prop="projectName">
<el-input
@ -15,7 +13,15 @@
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 label="项目类型" prop="projectType">
<el-select
@ -34,7 +40,15 @@
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 label="组织分类" prop="organizationClassification">
<el-input
@ -43,7 +57,15 @@
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 label="部门" prop="section">
<el-input
@ -52,7 +74,15 @@
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 label="年份" prop="year">
<el-input
@ -61,7 +91,15 @@
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 label="状态" prop="status">
<el-select
@ -90,7 +128,15 @@
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 label="规则" prop="rule">
<el-input
@ -99,7 +145,15 @@
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 label="目标值" prop="targetValue">
<el-input
@ -108,7 +162,15 @@
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 label="数据来源" prop="dataSource">
<el-input
@ -117,7 +179,15 @@
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 label="权重" prop="scale">
<el-input
@ -126,7 +196,15 @@
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 label="单位" prop="unit">
<el-input
@ -135,7 +213,15 @@
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 label="项目编码" prop="proCode">
<el-input
@ -144,7 +230,15 @@
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 label="项目编号" prop="proNo">
<el-input
@ -153,7 +247,15 @@
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 label="创建人" prop="createUid">
<el-input
@ -162,7 +264,15 @@
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 label="创建时间" prop="createTime">
<el-date-picker
@ -183,7 +293,15 @@
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 label="更新时间" prop="updateTime">
<el-date-picker
@ -204,7 +322,15 @@
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
@ -218,7 +344,7 @@
>重置</el-button
>
</el-form-item>
</el-form>
</el-form> -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@ -227,21 +353,21 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['build:man:add']"
v-hasPermi="['system:man:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['build:man:edit']"
v-hasPermi="['system:man:edit']"
>修改</el-button
>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button
type="danger"
@ -249,20 +375,20 @@
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['build:man:remove']"
v-hasPermi="['system:man:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['build:man:export']"
v-hasPermi="['system:man:export']"
>导出</el-button
>
</el-col>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@ -274,60 +400,155 @@
:data="manList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<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" />
<el-table-column label="项目类型" align="center" prop="projectType" />
<el-table-column
label="项目名称"
align="center"
prop="projectName"
min-width="120"
/>
<el-table-column
label="项目类型"
align="center"
prop="projectType"
min-width="120"
/>
<el-table-column
label="行政区划"
align="center"
prop="administrativeDivision"
min-width="120"
/>
<el-table-column
label="组织分类"
align="center"
prop="organizationClassification"
min-width="120"
/>
<el-table-column
label="部门"
align="center"
prop="section"
min-width="120"
/>
<el-table-column
label="年份"
align="center"
prop="year"
min-width="120"
/>
<el-table-column
label="状态"
align="center"
prop="status"
min-width="120"
/>
<el-table-column
label="指标类型"
align="center"
prop="indexType"
min-width="120"
/>
<el-table-column
label="指标名称"
align="center"
prop="indexName"
min-width="120"
/>
<el-table-column
label="规则"
align="center"
prop="rule"
min-width="120"
/>
<el-table-column
label="目标值"
align="center"
prop="targetValue"
min-width="120"
/>
<el-table-column
label="数据来源"
align="center"
prop="dataSource"
min-width="120"
/>
<el-table-column
label="权重"
align="center"
prop="scale"
min-width="120"
/>
<el-table-column
label="单位"
align="center"
prop="unit"
min-width="120"
/>
<el-table-column
label="项目编码"
align="center"
prop="proCode"
min-width="120"
/>
<el-table-column
label="项目编号"
align="center"
prop="proNo"
min-width="120"
/>
<el-table-column
label="创建人"
align="center"
prop="createUid"
min-width="120"
/>
<el-table-column label="部门" align="center" prop="section" />
<el-table-column label="年份" align="center" prop="year" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="指标类型" align="center" prop="indexType" />
<el-table-column label="指标名称" align="center" prop="indexName" />
<el-table-column label="规则" align="center" prop="rule" />
<el-table-column label="目标值" align="center" prop="targetValue" />
<el-table-column label="数据来源" align="center" prop="dataSource" />
<el-table-column label="权重" align="center" prop="scale" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="项目编码" align="center" prop="proCode" />
<el-table-column label="项目编号" align="center" prop="proNo" />
<el-table-column label="创建人" align="center" prop="createUid" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="更新人" align="center" prop="updateUid" />
<el-table-column
label="更新人"
align="center"
prop="updateUid"
min-width="120"
/>
<el-table-column
label="更新时间"
align="center"
prop="updateTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="数源部门" align="center" prop="owerDept" />
<el-table-column
label="数源部门"
align="center"
prop="owerDept"
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
@ -335,7 +556,7 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:man:edit']"
v-hasPermi="['system:man:edit']"
>修改</el-button
>
<el-button
@ -343,7 +564,7 @@
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:man:remove']"
v-hasPermi="['system:man:remove']"
>删除</el-button
>
</template>
@ -359,13 +580,23 @@
/>
<!-- 添加或修改安全目标信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<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="projectName">
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目类型" prop="projectType">
<el-select v-model="form.projectType" placeholder="请选择项目类型">
<el-select
v-model="form.projectType"
placeholder="请选择项目类型"
style="width: 100%"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
@ -393,7 +624,11 @@
</el-radio-group>
</el-form-item>
<el-form-item label="指标类型" prop="indexType">
<el-select v-model="form.indexType" placeholder="请选择指标类型">
<el-select
v-model="form.indexType"
placeholder="请选择指标类型"
style="width: 100%"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
@ -450,6 +685,7 @@ import {
} from "@/api/build/man";
export default {
props: ["proNo", "proCode"],
name: "Man",
data() {
return {
@ -499,6 +735,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
@ -515,6 +758,7 @@ export default {
/** 查询安全目标信息列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listMan(this.queryParams).then((response) => {
this.manList = response.records;
this.total = response.total;
@ -583,6 +827,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
@ -622,6 +873,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
if (this.form.id != null) {
updateMan(this.form).then((response) => {
if (response.code === 200) {
@ -688,3 +940,11 @@ export default {
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

544
jwtech-admin-page/src/views/build/objective/index.vue

@ -0,0 +1,544 @@
<template>
<div>
<!-- <el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="项目名称" prop="sctionName">
<el-input
v-model="queryParams.data.sctionName"
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 label="项目名称" prop="proNo">
<el-input
v-model="queryParams.data.proNo"
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 label="安全目标" prop="safetyObjectives">
<el-input
v-model="queryParams.data.safetyObjectives"
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 label="附件" prop="attachment">
<el-input
v-model="queryParams.data.attachment"
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
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="['build:objective: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:objective: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:objective:remove']"
>删除</el-button
>
</el-col>
<!-- <el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['build:objective:export']"
>导出</el-button
>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="objectiveList"
@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="sctionName"
min-width="120"
/>
<el-table-column
label="安全目标"
align="center"
prop="safetyObjectives"
min-width="120"
/>
<el-table-column
label="附件"
align="center"
prop="attachment"
min-width="150"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.attachment)"
: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"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:objective:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:objective: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="sctionName">
<el-input v-model="form.sctionName" placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="安全目标" prop="safetyObjectives">
<el-input
v-model="form.safetyObjectives"
placeholder="请输入安全目标"
/>
</el-form-item>
<el-form-item label="附件" prop="attachment">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList')"
:on-preview="handlePreview"
:on-remove="handleRemove1"
:before-remove="beforeRemove"
multiple
:on-success="submitUpload1"
:file-list="fileList"
>
<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>
<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 {
listObjective,
getObjective,
delObjective,
addObjective,
updateObjective,
exportObjective,
} from "@/api/build/objective";
import { getToken } from "@/utils/auth";
export default {
name: "Objective",
props: ["proNo", "proCode"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
objectiveList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
sctionName: null,
proNo: null,
safetyObjectives: null,
attachment: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {},
fileList: [],
//
headers: {
jianwei: "jwtech " + getToken(),
},
};
},
created() {
this.getList();
},
methods: {
/** 查询工程目标信息列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listObjective(this.queryParams).then((response) => {
this.objectiveList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList = [];
this.form = {
id: null,
sctionName: null,
proNo: null,
safetyObjectives: null,
attachment: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
sctionName: null,
proNo: null,
safetyObjectives: null,
attachment: 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;
getObjective(id).then((response) => {
this.form = response.data;
if (this.form.attachment) {
this.dynamicTags1 = JSON.parse(this.form.attachment);
}
this.open = true;
this.title = "修改工程目标信息";
});
},
/** 提交按钮 */
submitForm() {
this.form.attachment = this.fileList.length
? JSON.stringify(this.fileList)
: null;
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
if (this.form.id != null) {
updateObjective(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addObjective(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 delObjective(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 exportObjective(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
submitUpload1(_, fileList) {
this.fileList.push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
},
handleRemove1(file, fileList) {
let index = this.fileList.findIndex((item) => item.uid === file.uid);
//
this.fileList.splice(index, 1);
},
downloadFile2(info, index) {
console.log(info);
this.handlePreview(info);
},
//
handlePreview(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
});
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

411
jwtech-admin-page/src/views/build/person/index.vue

@ -1,12 +1,10 @@
<template>
<!-- 1.1.1.1.7.4. 项目安全生产管理机构人员信息-->
<div class="app-container">
<el-form
<div>
<!-- <el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="姓名" prop="name">
<el-input
@ -15,70 +13,134 @@
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 label="联系手机号码" prop="telphone">
<el-form-item label="所属机构" prop="affiliatedOrganization">
<el-input
v-model="queryParams.data.telphone"
placeholder="请输入联系手机号码"
v-model="queryParams.data.affiliatedOrganization"
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 label="所属单位" prop="unit">
<el-form-item label="安全职务" prop="securityDuty">
<el-input
v-model="queryParams.data.unit"
placeholder="请输入所属单位"
v-model="queryParams.data.securityDuty"
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 label="岗位" prop="post">
<el-form-item label="单位名称" prop="unitName">
<el-input
v-model="queryParams.data.post"
placeholder="请输入岗位"
v-model="queryParams.data.unitName"
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 label="持有资质证书" prop="qualificationCertificate">
<el-form-item label="职务" prop="job">
<el-input
v-model="queryParams.data.qualificationCertificate"
placeholder="请输入持有资质证书"
v-model="queryParams.data.job"
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 label="职称" prop="title">
<el-form-item label="资质证书" prop="qualificationCertificate">
<el-input
v-model="queryParams.data.title"
placeholder="请输入职称"
v-model="queryParams.data.qualificationCertificate"
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 label="学历水平" prop="educationalLevel">
<el-form-item label="有效期" prop="validity">
<el-input
v-model="queryParams.data.educationalLevel"
placeholder="请输入学历水平"
v-model="queryParams.data.validity"
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 label="人员照片信息" prop="personnelPhotos">
<el-form-item label="证书附件" prop="certificateAttachment">
<el-input
v-model="queryParams.data.personnelPhotos"
placeholder="请输入人员照片信息"
v-model="queryParams.data.certificateAttachment"
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 label="项目编码" prop="proCode">
<el-input
@ -87,7 +149,15 @@
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 label="项目编号" prop="proNo">
<el-input
@ -96,7 +166,15 @@
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 label="创建人" prop="createUid">
<el-input
@ -105,7 +183,15 @@
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 label="创建时间" prop="createTime">
<el-date-picker
@ -126,7 +212,15 @@
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 label="更新时间" prop="updateTime">
<el-date-picker
@ -147,7 +241,15 @@
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
@ -161,7 +263,7 @@
>重置</el-button
>
</el-form-item>
</el-form>
</el-form> -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@ -170,21 +272,21 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['build:person:add']"
v-hasPermi="['system:person:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['build:person:edit']"
v-hasPermi="['system:person:edit']"
>修改</el-button
>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button
type="danger"
@ -192,20 +294,20 @@
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['build:person:remove']"
v-hasPermi="['system:person:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['build:person:export']"
v-hasPermi="['system:person:export']"
>导出</el-button
>
</el-col>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@ -217,58 +319,114 @@
:data="personList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<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="name" />
<el-table-column label="联系手机号码" align="center" prop="telphone" />
<el-table-column label="所属单位" align="center" prop="unit" />
<el-table-column label="岗位" align="center" prop="post" />
<el-table-column
label="持有资质证书"
label="姓名"
align="center"
prop="name"
min-width="120"
/>
<el-table-column
label="所属机构"
align="center"
prop="affiliatedOrganization"
min-width="120"
/>
<el-table-column
label="安全职务"
align="center"
prop="securityDuty"
min-width="120"
/>
<el-table-column
label="单位名称"
align="center"
prop="unitName"
min-width="120"
/>
<el-table-column label="职务" align="center" prop="job" min-width="120" />
<el-table-column
label="资质证书"
align="center"
prop="qualificationCertificate"
min-width="120"
/>
<el-table-column
label="有效期"
align="center"
prop="validity"
min-width="120"
/>
<el-table-column
label="证书附件"
align="center"
prop="certificateAttachment"
min-width="120"
/>
<el-table-column
label="项目编码"
align="center"
prop="proCode"
min-width="120"
/>
<el-table-column label="职称" align="center" prop="title" />
<el-table-column
label="学历水平"
label="项目编号"
align="center"
prop="educationalLevel"
prop="proNo"
min-width="120"
/>
<el-table-column
label="人员照片信息"
label="创建人"
align="center"
prop="personnelPhotos"
prop="createUid"
min-width="120"
/>
<el-table-column label="项目编码" align="center" prop="proCode" />
<el-table-column label="项目编号" align="center" prop="proNo" />
<el-table-column label="创建人" align="center" prop="createUid" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="更新人" align="center" prop="updateUid" />
<el-table-column
label="更新人"
align="center"
prop="updateUid"
min-width="120"
/>
<el-table-column
label="更新时间"
align="center"
prop="updateTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="数源部门" align="center" prop="owerDept" />
<el-table-column
label="数源部门"
align="center"
prop="owerDept"
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
@ -276,7 +434,7 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:person:edit']"
v-hasPermi="['system:person:edit']"
>修改</el-button
>
<el-button
@ -284,7 +442,7 @@
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:person:remove']"
v-hasPermi="['system:person:remove']"
>删除</el-button
>
</template>
@ -299,40 +457,46 @@
@pagination="getList"
/>
<!-- 添加或修改项目人员名单信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<!-- 添加或修改项目安全生产管理机构人员信息对话框 -->
<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="name">
<el-input v-model="form.name" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="联系手机号码" prop="telphone">
<el-input v-model="form.telphone" placeholder="请输入联系手机号码" />
<el-form-item label="所属机构" prop="affiliatedOrganization">
<el-input
v-model="form.affiliatedOrganization"
placeholder="请输入所属机构"
/>
</el-form-item>
<el-form-item label="所属单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入所属单位" />
<el-form-item label="安全职务" prop="securityDuty">
<el-input v-model="form.securityDuty" placeholder="请输入安全职务" />
</el-form-item>
<el-form-item label="岗位" prop="post">
<el-input v-model="form.post" placeholder="请输入岗位" />
<el-form-item label="单位名称" prop="unitName">
<el-input v-model="form.unitName" placeholder="请输入单位名称" />
</el-form-item>
<el-form-item label="持有资质证书" prop="qualificationCertificate">
<el-form-item label="职务" prop="job">
<el-input v-model="form.job" placeholder="请输入职务" />
</el-form-item>
<el-form-item label="资质证书" prop="qualificationCertificate">
<el-input
v-model="form.qualificationCertificate"
placeholder="请输入持有资质证书"
placeholder="请输入资质证书"
/>
</el-form-item>
<el-form-item label="职称" prop="title">
<el-input v-model="form.title" placeholder="请输入职称" />
<el-form-item label="有效期" prop="validity">
<el-input v-model="form.validity" placeholder="请输入有效期" />
</el-form-item>
<el-form-item label="学历水平" prop="educationalLevel">
<el-form-item label="证书附件" prop="certificateAttachment">
<el-input
v-model="form.educationalLevel"
placeholder="请输入学历水平"
/>
</el-form-item>
<el-form-item label="人员照片信息" prop="personnelPhotos">
<el-input
v-model="form.personnelPhotos"
placeholder="请输入人员照片信息"
v-model="form.certificateAttachment"
placeholder="请输入证书附件"
/>
</el-form-item>
<el-form-item label="项目编码" prop="proCode">
@ -371,6 +535,7 @@ import {
export default {
name: "Person",
props: ["proNo", "proCode"],
data() {
return {
//
@ -385,7 +550,7 @@ export default {
showSearch: true,
//
total: 0,
//
//
personList: [],
//
title: "",
@ -398,13 +563,13 @@ export default {
ids: null,
data: {
name: null,
telphone: null,
unit: null,
post: null,
affiliatedOrganization: null,
securityDuty: null,
unitName: null,
job: null,
qualificationCertificate: null,
title: null,
educationalLevel: null,
personnelPhotos: null,
validity: null,
certificateAttachment: null,
proCode: null,
proNo: null,
createUid: null,
@ -413,6 +578,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
@ -424,9 +596,10 @@ export default {
this.getList();
},
methods: {
/** 查询项目人员名单信息列表 */
/** 查询项目安全生产管理机构人员信息列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listPerson(this.queryParams).then((response) => {
this.personList = response.records;
this.total = response.total;
@ -443,13 +616,13 @@ export default {
this.form = {
id: null,
name: null,
telphone: null,
unit: null,
post: null,
affiliatedOrganization: null,
securityDuty: null,
unitName: null,
job: null,
qualificationCertificate: null,
title: null,
educationalLevel: null,
personnelPhotos: null,
validity: null,
certificateAttachment: null,
proCode: null,
proNo: null,
createUid: null,
@ -468,13 +641,13 @@ export default {
data: {
id: null,
name: null,
telphone: null,
unit: null,
post: null,
affiliatedOrganization: null,
securityDuty: null,
unitName: null,
job: null,
qualificationCertificate: null,
title: null,
educationalLevel: null,
personnelPhotos: null,
validity: null,
certificateAttachment: null,
proCode: null,
proNo: null,
createUid: null,
@ -483,6 +656,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
@ -506,7 +686,7 @@ export default {
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目人员名单信息";
this.title = "添加项目安全生产管理机构人员信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
@ -515,13 +695,14 @@ export default {
getPerson(id).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改项目人员名单信息";
this.title = "修改项目安全生产管理机构人员信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
if (this.form.id != null) {
updatePerson(this.form).then((response) => {
if (response.code === 200) {
@ -588,3 +769,11 @@ export default {
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

286
jwtech-admin-page/src/views/build/score/index.vue

@ -1,12 +1,10 @@
<template>
<!-- 1.1.1.1.7.3. 参建单位考核评分统计信息-->
<div class="app-container">
<el-form
<div>
<!-- <el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="年份" prop="year">
<el-input
@ -15,7 +13,15 @@
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 label="组织分类" prop="organizationClassification">
<el-input
@ -24,7 +30,15 @@
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 label="部门" prop="section">
<el-input
@ -33,7 +47,15 @@
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 label="考核类型" prop="assessmentType">
<el-select
@ -52,7 +74,15 @@
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 label="考核日期" prop="assessmentDate">
<el-date-picker
@ -73,7 +103,15 @@
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 label="考核评价" prop="examinationEvaluation">
<el-input
@ -82,7 +120,15 @@
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 label="实际得分" prop="actualScore">
<el-input
@ -91,7 +137,15 @@
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 label="项目编码" prop="proCode">
<el-input
@ -100,7 +154,15 @@
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 label="项目编号" prop="proNo">
<el-input
@ -109,7 +171,15 @@
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 label="创建人" prop="createUid">
<el-input
@ -118,7 +188,15 @@
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 label="创建时间" prop="createTime">
<el-date-picker
@ -139,7 +217,15 @@
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 label="更新时间" prop="updateTime">
<el-date-picker
@ -160,7 +246,15 @@
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
@ -174,7 +268,7 @@
>重置</el-button
>
</el-form-item>
</el-form>
</el-form> -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@ -183,21 +277,21 @@
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['build:score:add']"
v-hasPermi="['system:score:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['build:score:edit']"
v-hasPermi="['system:score:edit']"
>修改</el-button
>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button
type="danger"
@ -205,20 +299,20 @@
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['build:score:remove']"
v-hasPermi="['system:score:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['build:score:export']"
v-hasPermi="['system:score:export']"
>导出</el-button
>
</el-col>
</el-col> -->
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@ -230,64 +324,129 @@
:data="scoreList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<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="year" />
<el-table-column
label="年份"
align="center"
prop="year"
min-width="120"
/>
<el-table-column
label="组织分类"
align="center"
prop="organizationClassification"
min-width="120"
/>
<el-table-column
label="部门"
align="center"
prop="section"
min-width="120"
/>
<el-table-column
label="考核类型"
align="center"
prop="assessmentType"
min-width="120"
/>
<el-table-column
label="考核周期"
align="center"
prop="assessmentCycle"
min-width="120"
/>
<el-table-column label="部门" align="center" prop="section" />
<el-table-column label="考核类型" align="center" prop="assessmentType" />
<el-table-column label="考核周期" align="center" prop="assessmentCycle" />
<el-table-column
label="考核日期"
align="center"
prop="assessmentDate"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.assessmentDate, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="总得分" align="center" prop="totalPoints" />
<el-table-column
label="总得分"
align="center"
prop="totalPoints"
min-width="120"
/>
<el-table-column
label="考核评价"
align="center"
prop="examinationEvaluation"
min-width="120"
/>
<el-table-column
label="实际得分"
align="center"
prop="actualScore"
min-width="120"
/>
<el-table-column
label="项目编码"
align="center"
prop="proCode"
min-width="120"
/>
<el-table-column
label="项目编号"
align="center"
prop="proNo"
min-width="120"
/>
<el-table-column
label="创建人"
align="center"
prop="createUid"
min-width="120"
/>
<el-table-column label="实际得分" align="center" prop="actualScore" />
<el-table-column label="项目编码" align="center" prop="proCode" />
<el-table-column label="项目编号" align="center" prop="proNo" />
<el-table-column label="创建人" align="center" prop="createUid" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="更新人" align="center" prop="updateUid" />
<el-table-column
label="更新人"
align="center"
prop="updateUid"
min-width="120"
/>
<el-table-column
label="更新时间"
align="center"
prop="updateTime"
width="180"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column label="数源部门" align="center" prop="owerDept" />
<el-table-column
label="数源部门"
align="center"
prop="owerDept"
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
@ -295,7 +454,7 @@
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['build:score:edit']"
v-hasPermi="['system:score:edit']"
>修改</el-button
>
<el-button
@ -303,7 +462,7 @@
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['build:score:remove']"
v-hasPermi="['system:score:remove']"
>删除</el-button
>
</template>
@ -319,7 +478,13 @@
/>
<!-- 添加或修改参建单位考核评分统计信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<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="year">
<el-input v-model="form.year" placeholder="请输入年份" />
@ -334,7 +499,11 @@
<el-input v-model="form.section" placeholder="请输入部门" />
</el-form-item>
<el-form-item label="考核类型" prop="assessmentType">
<el-select v-model="form.assessmentType" placeholder="请选择考核类型">
<el-select
v-model="form.assessmentType"
placeholder="请选择考核类型"
style="width: 100%"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
@ -348,7 +517,7 @@
<el-date-picker
clearable
size="small"
style="width: 200px"
style="width: 100%"
v-model="form.assessmentDate"
type="date"
value-format="yyyy-MM-dd"
@ -404,6 +573,7 @@ import {
export default {
name: "Score",
props: ["proNo", "proCode"],
data() {
return {
//
@ -447,6 +617,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
@ -461,6 +638,7 @@ export default {
/** 查询参建单位考核评分统计信息列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
listScore(this.queryParams).then((response) => {
this.scoreList = response.records;
this.total = response.total;
@ -519,6 +697,13 @@ export default {
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
};
this.resetForm("form");
},
@ -558,6 +743,7 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
if (this.form.id != null) {
updateScore(this.form).then((response) => {
if (response.code === 200) {
@ -624,3 +810,11 @@ export default {
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

2
jwtech-admin-page/src/views/building/peasantWorkerSystem/options/clockingIn.vue

@ -472,6 +472,8 @@ export default {
created() {
this.getList();
listRealName({
pageNum:1,
pageSize:9999,
data: {
proNo: this.proNo,
},

20
jwtech-admin-page/src/views/building/projectInfo/projectProcess/dangerLedger.vue

@ -0,0 +1,20 @@
<template>
<div>
<riskAndHiddenDangerLedger :proNo="proNo" :proCode="proCode" />
<hiddenDangerRectificationLedger :proNo="proNo" :proCode="proCode" />
</div>
</template>
<script>
import riskAndHiddenDangerLedger from "./riskAndHiddenDangerLedger.vue";
import hiddenDangerRectificationLedger from "./hiddenDangerRectificationLedger.vue";
export default {
name: "DangerLedger",
props: ["proNo", "proCode"],
components: { riskAndHiddenDangerLedger, hiddenDangerRectificationLedger },
data() {
return {};
},
};
</script>

728
jwtech-admin-page/src/views/building/projectInfo/projectProcess/dangerRegistration.vue

@ -0,0 +1,728 @@
<template>
<!-- 竣工验收-->
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="隐患名称" prop="hazardName">
<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:projectAcceptance: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:projectAcceptance: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:projectAcceptance:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="accList"
@selection-change="handleSelectionChange"
tooltip-effect="dark myTooltips"
>
<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="hazardName"
min-width="120"
/>
<el-table-column
label="项目名称"
align="center"
prop="entryName"
min-width="120"
/>
<el-table-column
label="排查计划"
align="center"
prop="investigationPlan"
min-width="120"
/>
<el-table-column
label="检查单位"
align="center"
prop="inspectionUnit"
min-width="120"
/>
<el-table-column
label="检查责任人"
align="center"
prop="personCgeInspection"
min-width="120"
/>
<el-table-column
label="检查周期"
align="center"
prop="inspectionCycle"
min-width="120"
/>
<el-table-column
label="检查人列表信息"
align="center"
prop="checkerListInfo"
min-width="120"
/>
<el-table-column
label="隐患描述"
align="center"
prop="hazardDescription"
min-width="120"
/>
<el-table-column
label="隐患类型"
align="center"
prop="hazardType"
min-width="120"
/>
<el-table-column
label="隐患等级"
align="center"
prop="hazardLevel"
min-width="120"
/>
<el-table-column
label="整改期限"
align="center"
prop="rectificationDeadline"
min-width="120"
/>
<el-table-column
label="整改责任单位"
align="center"
prop="rectificationResponsibleUnit"
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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</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"
>
<el-row :gutter="15" class="pad12">
<el-col :span="12">
<el-form-item label="隐患名称" prop="hazardName">
<el-input
v-model="form.hazardName"
placeholder="请输入隐患名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目名称" prop="entryName">
<el-input
v-model="form.entryName"
placeholder="请输入项目名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="排查计划" prop="investigationPlan">
<el-input
v-model="form.investigationPlan"
placeholder="请输入排查计划"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检查单位" prop="inspectionUnit">
<el-input
v-model="form.inspectionUnit"
placeholder="请输入检查单位"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检查责任人" prop="personCgeInspection">
<el-input
v-model="form.personCgeInspection"
placeholder="请输入检查责任人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检查周期" prop="inspectionCycle">
<el-input
v-model="form.inspectionCycle"
placeholder="请输入检查周期"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检查人列表信息" prop="checkerListInfo">
<el-input
v-model="form.checkerListInfo"
placeholder="请输入检查人列表信息"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患描述" prop="hazardDescription">
<el-input
v-model="form.hazardDescription"
placeholder="请输入隐患描述"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患所在区域" prop="hazardLocationArea">
<el-input
v-model="form.hazardLocationArea"
placeholder="请输入隐患所在区域"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患类型" prop="hazardType">
<el-input
v-model="form.hazardType"
placeholder="请输入隐患类型"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="隐患等级" prop="hazardLevel">
<el-input
v-model="form.hazardLevel"
placeholder="请输入隐患等级"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="整改期限" prop="rectificationDeadline">
<el-input
v-model="form.rectificationDeadline"
placeholder="请输入整改期限"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="整改责任单位"
prop="rectificationResponsibleUnit"
>
<el-input
v-model="form.rectificationResponsibleUnit"
placeholder="请输入整改责任单位"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</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 {
listRecord,
getRecord,
addRecord,
updateRecord,
delRecord,
exportRecord,
} from "@/api/build/hazardRecord";
import {
listAcc,
getAcc,
delAcc,
addAcc,
updateAcc,
exportAcc,
} from "@/api/build/comAcc";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default {
name: "Acc",
props: ["projectName", "proNo", "proCode", "projectLegalPerson"],
data() {
return {
dynamicTags1: [],
dynamicTags2: [],
inputVisible1: false,
inputVisible2: false,
inputValue1: "",
inputValue2: "",
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
accList: [],
//
title: "",
viewTitle: "",
//
open: false,
viewOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {},
cv: {
name: "hazardName",
type: "like",
value: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
projectAcceptanceMsg: {},
//
rules: {},
//
fileList1: [],
fileList2: [],
fileList3: [],
fileList4: [],
fileList5: [],
fileList6: [],
fileList7: [],
fileList8: [],
fileList9: [],
fileList10: [],
//
headers: {
jianwei: "jwtech " + getToken(),
},
//
whetherOptions: [],
};
},
created() {
this.getList();
this.getDicts("whether").then((response) => {
this.whetherOptions = response.data;
});
},
methods: {
whetherFarmet(key) {
if (key == 0) {
return "否";
} else if (key == 1) {
return "是";
} else {
return "";
}
},
acceptancePersonFarmat(data) {
if (data) {
// console.log(data);
let arr = JSON.parse(data);
if (arr.length == 0) {
return "";
} else {
// console.log(1111, arr);
return arr.join("、");
}
}
},
// ---
handleClose1(tag) {
this.dynamicTags1.splice(this.dynamicTags1.indexOf(tag), 1);
this.form.acceptancePerson = this.dynamicTags1.length
? JSON.stringify(this.dynamicTags1)
: null;
this.$refs.form.validateField("acceptancePerson");
},
showInput1() {
this.inputVisible1 = true;
this.$nextTick((_) => {
this.$refs.saveTagInput1.$refs.input.focus();
});
},
handleInputConfirm1() {
let inputValue1 = this.inputValue1;
if (inputValue1) {
this.dynamicTags1.push(inputValue1);
}
this.form.acceptancePerson = this.dynamicTags1.length
? JSON.stringify(this.dynamicTags1)
: null;
this.$refs.form.validateField("acceptancePerson");
this.inputVisible1 = false;
this.inputValue1 = "";
},
// ---
handleClose2(tag) {
this.dynamicTags2.splice(this.dynamicTags2.indexOf(tag), 1);
this.form.acceptancePersonnel = this.dynamicTags2.length
? JSON.stringify(this.dynamicTags2)
: null;
this.$refs.form.validateField("acceptancePersonnel");
},
showInput2() {
this.inputVisible2 = true;
this.$nextTick((_) => {
this.$refs.saveTagInput2.$refs.input.focus();
});
},
handleInputConfirm2() {
let inputValue2 = this.inputValue2;
if (inputValue2) {
this.dynamicTags2.push(inputValue2);
}
this.form.acceptancePersonnel = this.dynamicTags2.length
? JSON.stringify(this.dynamicTags2)
: null;
this.$refs.form.validateField("acceptancePersonnel");
this.inputVisible2 = false;
this.inputValue2 = "";
},
/** 查询竣工验收列表 */
getList() {
this.loading = true;
this.projectAcceptanceMsg.projectName = this.projectName;
this.projectAcceptanceMsg.proNo = this.proNo;
this.projectAcceptanceMsg.proCode = this.proCode;
this.projectAcceptanceMsg.projectLegal = this.projectLegalPerson;
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.proCode = this.proCode;
listRecord(this.queryParams).then((response) => {
this.accList = response.records;
this.total = response.total;
this.loading = false;
});
},
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getRecord(id).then((response) => {
this.form = response.data;
});
this.open = true;
this.title = "修改项目验收信息";
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.dynamicTags1 = [];
this.dynamicTags2 = [];
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.fileList4 = [];
this.fileList5 = [];
this.fileList6 = [];
this.fileList7 = [];
this.fileList8 = [];
this.fileList9 = [];
this.fileList10 = [];
this.form = {
id: null,
hazardName: null,
entryName: null,
investigationPlan: null,
inspectionUnit: null,
personCgeInspection: null,
inspectionCycle: null,
checkerListInfo: null,
hazardDescription: null,
hazardType: null,
hazardLevel: null,
rectificationDeadline: null,
rectificationResponsibleUnit: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
ids: null,
data: {},
cv: {
name: "hazardName",
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.open = true;
this.title = "添加项目完工验收";
},
viewInfo(row) {
this.viewTitle = "查看完工验收";
this.projectAcceptanceMsg = row;
console.log("projectAcceptanceMsg", row);
this.viewOpen = true;
},
//
closeView() {
this.projectAcceptanceMsg = {};
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
this.form.proCode = this.proCode;
console.log("this.formthis.form", this.form);
if (this.form.id != null) {
updateRecord(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addRecord(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 delRecord(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
},
};
</script>
<style lang="scss">
.myTooltips {
max-width: 60vw;
}
</style>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
::v-deep {
.el-dialog {
margin-top: 2vh !important;
}
}
.pad12 {
padding: 0 12.5px;
}
.el-tag + .el-tag {
margin-left: 10px;
}
.button-new-tag {
margin-right: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
.input-new-tag {
width: 180px;
margin-left: 10px;
vertical-align: bottom;
}
.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>

348
jwtech-admin-page/src/views/building/projectInfo/projectProcess/hiddenDangerRectificationLedger.vue

@ -0,0 +1,348 @@
<template>
<div class="app-container">
<div class="listTitle">
<span>隐患整改台账</span>
<span class="addBtn" @click="handleAdd(2)">
<i class="el-icon-plus"></i>
添加
</span>
</div>
<el-table v-loading="loading" :data="filingsList">
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
label="整改状态"
align="center"
prop="rectificationStatus"
min-width="120"
/>
<el-table-column
label="隐患描述"
align="center"
prop="hazardDescription"
min-width="120"
/>
<el-table-column
label="整改措施"
align="center"
prop="rectificationMeasures"
min-width="120"
/>
<el-table-column
label="所在工区"
align="center"
prop="hazardLocationArea"
min-width="120"
/>
<el-table-column
label="整改日期"
align="center"
prop="rectificationDate"
min-width="120"
/>
<el-table-column
label="整改后审核意见"
align="center"
prop="reviewOpinionsAfterRectification"
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)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</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="closeDialog"
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="整改状态" prop="rectificationStatus">
<el-input
v-model="form.rectificationStatus"
type="textarea"
placeholder="请输入整改状态"
/>
</el-form-item>
<el-form-item label="隐患描述" prop="hazardDescription">
<el-input
v-model="form.hazardDescription"
type="textarea"
placeholder="请输入隐患描述"
/>
</el-form-item>
<el-form-item label="整改措施" prop="rectificationMeasures">
<el-input
v-model="form.rectificationMeasures"
type="textarea"
placeholder="请输入整改措施"
/>
</el-form-item>
<el-form-item label="所在工区" prop="hazardLocationArea">
<el-input
v-model="form.hazardLocationArea"
type="textarea"
placeholder="请输入所在工区"
/>
</el-form-item>
<el-form-item label="整改日期" prop="rectificationDate">
<el-date-picker
v-model="form.rectificationDate"
type="year"
placeholder="请选择整改日期"
style="width: 100%"
value-format="yyyy"
>
</el-date-picker>
</el-form-item>
<el-form-item
label="整改后审核意见"
prop="reviewOpinionsAfterRectification"
>
<el-input
v-model="form.reviewOpinionsAfterRectification"
type="textarea"
placeholder="请输入整改后审核意见"
/>
</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 {
listRectification,
getRectification,
addRectification,
updateRectification,
delRectification,
exportRectification,
} from "@/api/build/rectification";
export default {
name: "Filings",
props: ["proNo", "proCode"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {},
},
//
form: {},
//
rules: {},
filingsList: [],
};
},
created() {
this.getList();
},
methods: {
closeDialog() {},
/** 查询安全备案列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.proCode = this.proCode;
listRectification(this.queryParams).then((response) => {
this.filingsList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {},
};
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(type) {
this.reset();
this.open = true;
this.form.type = type;
if (this.form.type == 1) {
this.title = "添加整体措施方案";
} else {
this.title = "添加度汛方案";
}
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getRectification(id).then((response) => {
this.form = response.data;
this.open = true;
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
this.form.proCode = this.proCode;
if (this.form.id != null) {
updateRectification(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addRectification(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 delRectification(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
// ::v-deep {
// .el-dialog {
// margin-top: 10vh !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;
}
}
</style>

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

@ -210,6 +210,36 @@
:projectLegalPerson="formData.projectLegalPerson"
/>
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:xmys:index'])"
label="隐患排查"
name="missIdentification"
:disabled="!routeList[1].isEdit"
:lazy="true"
>
<!-- v-if="checkPermi(['zhuyulei:index:list'])" -->
<missIdentification
:proNo="formData.proNo"
:proCode="formData.proCode"
:projectName="formData.projectName"
:projectLegalPerson="formData.projectLegalPerson"
/>
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:xmys:index'])"
label="安全目标"
name="safetyGoal"
:disabled="!routeList[1].isEdit"
:lazy="true"
>
<safetyGoal
:proNo="formData.proNo"
:proCode="formData.proCode"
:projectName="formData.projectName"
:projectLegalPerson="formData.projectLegalPerson"
/>
</el-tab-pane>
</el-tabs>
</div>
</template>
@ -218,8 +248,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 './preparationConstruction/index.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";
@ -232,6 +262,8 @@ import investment from "./investment/index.vue";
import peasantWorkerSystem from "./peasantWorkerSystem/index.vue";
import projectAcceptance from "./acceptanceIndex.vue";
import contEvaluation from "./projectContEvalation.vue"
import missIdentification from './missIdentification.vue'
import safetyGoal from './safetyGoal.vue'
import securityRisk from "./securityRisk/index.vue";
import {
listInfo,
@ -259,6 +291,8 @@ export default {
investment,
peasantWorkerSystem,
projectAcceptance,
missIdentification,
safetyGoal,
securityRisk
},
data() {

40
jwtech-admin-page/src/views/building/projectInfo/projectProcess/missIdentification.vue

@ -0,0 +1,40 @@
<template>
<div class="app-container">
<el-tabs v-model="activeName" style="margin-bottom: 20px">
<el-tab-pane label="隐患登记" name="dangerRegistration">
<dangerRegistration
v-if="activeName === 'dangerRegistration'"
:proNo="proNo"
:proCode="proCode"
:projectName="projectName"
:projectLegalPerson="projectLegalPerson"
/>
</el-tab-pane>
<el-tab-pane label="隐患台账" name="dangerLedger">
<dangerLedger
v-if="activeName === 'dangerLedger'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import dangerLedger from "./dangerLedger.vue";
import dangerRegistration from "./dangerRegistration.vue";
export default {
props: ["projectName", "proNo", "proCode", "projectLegalPerson"],
components: { dangerRegistration, dangerLedger },
data() {
return {
activeName: "dangerRegistration",
};
},
};
</script>
<style scoped lang="scss"></style>

668
jwtech-admin-page/src/views/building/projectInfo/projectProcess/preparationConstruction/options/startUp.vue

@ -0,0 +1,668 @@
<template>
<!-- 项目开工文件-->
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="开工备案编号" prop="constructionRegistrationNumber">
<el-input
v-model="queryParams.data.constructionRegistrationNumber"
placeholder="请输入开工备案编号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="开工时间" prop="commencementTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="queryParams.commencementTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择开工时间"
>
</el-date-picker>
</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="['build:commen: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:commen: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:commen:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['build:commen:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="commenList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="120" align="center" />
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
label="开工备案编号"
align="center"
prop="constructionRegistrationNumber"
/>
<el-table-column
label="开工时间"
align="center"
prop="commencementTime"
width="180"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.commencementTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="开工备案受理单位"
align="center"
prop="commencementAcceptanceUnit"
/>
<el-table-column
label="初步设计批文"
align="center"
prop="preliminaryDesignApproval"
/>
<el-table-column
label="竣工验收主持单位"
align="center"
prop="completionAcceptanceHostUnit"
/>
<el-table-column
label="开工文件附件"
align="center"
prop="projectCommencementFiles"
/>
<el-table-column
label="上报时间"
align="center"
prop="reportingTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.reportingTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="审批时间"
align="center"
prop="approvalTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.approvalTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="批复意见"
align="center"
prop="approvalOpinions"
/>
<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-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</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>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-col :span="12">
<el-form-item
label="开工备案编号"
prop="constructionRegistrationNumber"
>
<el-input
v-model="form.constructionRegistrationNumber"
placeholder="请输入开工备案编号"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开工时间" prop="commencementTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="form.commencementTime"
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="commencementAcceptanceUnit"
>
<el-input
v-model="form.commencementAcceptanceUnit"
placeholder="请输入开工备案受理单位"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="初步设计批文" prop="preliminaryDesignApproval">
<el-input
v-model="form.preliminaryDesignApproval"
placeholder="请输入初步设计批文"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="竣工验收主持单位"
prop="completionAcceptanceHostUnit"
>
<el-input
v-model="form.completionAcceptanceHostUnit"
placeholder="请输入竣工验收主持单位"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="施工详图设计是否满足主体工程施工需要"
prop="isMeetTheConstructionNeeds"
>
<el-input
v-model="form.isMeetTheConstructionNeeds"
placeholder="请输入施工详图设计是否满足主体工程施工需要"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="施工详图文件" prop="constructionDetailFile">
<el-input
v-model="form.constructionDetailFile"
placeholder="请输入施工详图文件"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设资金是否已落实" prop="isFundsBeenImplemented">
<el-input
v-model="form.isFundsBeenImplemented"
placeholder="请输入建设资金是否已落实"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="建设资金文件" prop="constructionFundDocuments">
<el-input
v-model="form.constructionFundDocuments"
placeholder="请输入建设资金文件"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="主要设备和材料是否落实"
prop="isMaterialsImplemented"
>
<el-input
v-model="form.isMaterialsImplemented"
placeholder="请输入主要设备和材料是否落实"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="落实文件" prop="implementDocuments">
<el-input
v-model="form.implementDocuments"
placeholder="请输入落实文件"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="施工准备和征地工作是否满足开工需要"
prop="isMeetTheNeedsCommencement"
>
<el-input
v-model="form.isMeetTheNeedsCommencement"
placeholder="请输入施工准备和征地工作是否满足开工需要"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="满足开工需要文件"
prop="documentsThatMeetTheRequirements"
>
<el-input
v-model="form.documentsThatMeetTheRequirements"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="质量监督安全手续是否办理"
prop="isSafetyProceduresBeenCompleted"
>
<el-input
v-model="form.isSafetyProceduresBeenCompleted"
placeholder="请输入质量监督安全手续是否办理"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="办理文件" prop="handlingDocuments">
<el-input
v-model="form.handlingDocuments"
placeholder="请输入办理文件"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开工文件附件" prop="projectCommencementFiles">
<el-input
v-model="form.projectCommencementFiles"
placeholder="请输入开工文件附件"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上报时间" prop="reportingTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
v-model="form.reportingTime"
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="approvalTime">
<el-date-picker
clearable
size="small"
style="width: 200px"
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="approvalOpinions">
<el-input
v-model="form.approvalOpinions"
placeholder="请输入批复意见"
/>
</el-form-item>
</el-col>
</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 {
listCommen,
getCommen,
delCommen,
addCommen,
updateCommen,
exportCommen,
} from "@/api/build/commen";
export default {
name: "Commen",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
commenList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
constructionRegistrationNumber: null,
commencementTime: null,
commencementAcceptanceUnit: null,
preliminaryDesignApproval: null,
completionAcceptanceHostUnit: null,
isMeetTheConstructionNeeds: null,
constructionDetailFile: null,
isFundsBeenImplemented: null,
constructionFundDocuments: null,
isMaterialsImplemented: null,
implementDocuments: null,
isMeetTheNeedsCommencement: null,
documentsThatMeetTheRequirements: null,
isSafetyProceduresBeenCompleted: null,
handlingDocuments: null,
projectCommencementFiles: null,
reportingTime: null,
approvalTime: null,
approvalOpinions: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
},
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询项目开工文件列表 */
getList() {
this.loading = true;
listCommen(this.queryParams).then((response) => {
this.commenList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
constructionRegistrationNumber: null,
commencementTime: null,
commencementAcceptanceUnit: null,
preliminaryDesignApproval: null,
completionAcceptanceHostUnit: null,
isMeetTheConstructionNeeds: null,
constructionDetailFile: null,
isFundsBeenImplemented: null,
constructionFundDocuments: null,
isMaterialsImplemented: null,
implementDocuments: null,
isMeetTheNeedsCommencement: null,
documentsThatMeetTheRequirements: null,
isSafetyProceduresBeenCompleted: null,
handlingDocuments: null,
projectCommencementFiles: null,
reportingTime: null,
approvalTime: null,
approvalOpinions: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
constructionRegistrationNumber: null,
commencementTime: null,
commencementAcceptanceUnit: null,
preliminaryDesignApproval: null,
completionAcceptanceHostUnit: null,
isMeetTheConstructionNeeds: null,
constructionDetailFile: null,
isFundsBeenImplemented: null,
constructionFundDocuments: null,
isMaterialsImplemented: null,
implementDocuments: null,
isMeetTheNeedsCommencement: null,
documentsThatMeetTheRequirements: null,
isSafetyProceduresBeenCompleted: null,
handlingDocuments: null,
projectCommencementFiles: null,
reportingTime: null,
approvalTime: null,
approvalOpinions: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
},
};
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;
getCommen(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) {
updateCommen(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addCommen(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 delCommen(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 exportCommen(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
},
};
</script>

345
jwtech-admin-page/src/views/building/projectInfo/projectProcess/riskAndHiddenDangerLedger.vue

@ -0,0 +1,345 @@
<template>
<div class="app-container">
<div class="listTitle">
<span>风险隐患台账列表</span>
<span class="addBtn" @click="handleAdd(2)">
<i class="el-icon-plus"></i>
添加
</span>
</div>
<el-table v-loading="loading" :data="filingsList">
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
label="整改状态"
align="center"
prop="rectificationStatus"
min-width="120"
/>
<el-table-column
label="隐患描述"
align="center"
prop="hazardDescription"
min-width="120"
/>
<el-table-column
label="整改措施"
align="center"
prop="rectificationMeasures"
min-width="120"
/>
<el-table-column
label="所在工区"
align="center"
prop="hazardLocationArea"
min-width="120"
/>
<el-table-column
label="检查日期"
align="center"
prop="inspectionDate"
min-width="120"
/>
<el-table-column
label="其他隐患详情信息"
align="center"
prop="hazardDetailsInformation"
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)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</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="closeDialog"
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="整改状态" prop="rectificationStatus">
<el-input
v-model="form.rectificationStatus"
type="textarea"
placeholder="请输入整改状态"
/>
</el-form-item>
<el-form-item label="隐患描述" prop="hazardDescription">
<el-input
v-model="form.hazardDescription"
type="textarea"
placeholder="请输入隐患描述"
/>
</el-form-item>
<el-form-item label="整改措施" prop="rectificationMeasures">
<el-input
v-model="form.rectificationMeasures"
type="textarea"
placeholder="请输入整改措施"
/>
</el-form-item>
<el-form-item label="所在工区" prop="hazardLocationArea">
<el-input
v-model="form.hazardLocationArea"
type="textarea"
placeholder="请输入所在工区"
/>
</el-form-item>
<el-form-item label="检查日期" prop="inspectionDate">
<el-date-picker
v-model="form.inspectionDate"
type="year"
placeholder="请选择检查日期"
style="width: 100%"
value-format="yyyy"
>
</el-date-picker>
</el-form-item>
<el-form-item label="其他隐患详情信息" prop="hazardDetailsInformation">
<el-input
v-model="form.hazardDetailsInformation"
type="textarea"
placeholder="请输入所在工区"
/>
</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 {
listLedger,
getLedger,
addLedger,
updateLedger,
delLedger,
exportLedger,
} from "@/api/build/ledger";
export default {
name: "Filings",
props: ["proNo", "proCode"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {},
},
//
form: {},
//
rules: {},
filingsList: [],
};
},
created() {
this.getList();
},
methods: {
closeDialog() {},
/** 查询安全备案列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.proCode = this.proCode;
listLedger(this.queryParams).then((response) => {
this.filingsList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {},
};
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(type) {
this.reset();
this.open = true;
this.form.type = type;
if (this.form.type == 1) {
this.title = "添加整体措施方案";
} else {
this.title = "添加度汛方案";
}
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getLedger(id).then((response) => {
this.form = response.data;
this.open = true;
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.proNo = this.proNo;
this.form.proCode = this.proCode;
if (this.form.id != null) {
updateLedger(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addLedger(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 delLedger(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
// ::v-deep {
// .el-dialog {
// margin-top: 10vh !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;
}
}
</style>

65
jwtech-admin-page/src/views/building/projectInfo/projectProcess/safetyGoal.vue

@ -0,0 +1,65 @@
<template>
<div class="app-container">
<el-tabs v-model="activeName" style="margin-bottom: 20px">
<el-tab-pane label="安全目标信息" name="man">
<man
v-if="activeName === 'man'"
:proNo="proNo"
:proCode="proCode"
:projectName="projectName"
:projectLegalPerson="projectLegalPerson"
/>
</el-tab-pane>
<el-tab-pane label="参建评价" name="score">
<score
v-if="activeName === 'score'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="项目安全生产管理机构信息" name="institution">
<institution
v-if="activeName === 'institution'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="项目安全生产管理机构人员信息" name="person">
<person
v-if="activeName === 'person'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
<el-tab-pane label="工程目标信息" name="objective">
<objective
v-if="activeName === 'objective'"
:proNo="proNo"
:proCode="proCode"
/>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import man from "@/views/build/man/index.vue";
import score from "@/views/build/score/index.vue";
import institution from "@/views/build/institution/index.vue";
import person from "@/views/build/person/index.vue";
import objective from "@/views/build/objective/index.vue";
export default {
props: ["projectName", "proNo", "proCode", "projectLegalPerson"],
components: { man, score, institution, person, objective },
data() {
return {
activeName: "man",
};
},
};
</script>
<style scoped lang="scss"></style>

750
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/assetCondition.vue

@ -0,0 +1,750 @@
<template>
<div class="app-container">
<!-- <el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="项目名称" prop="projectName">
<el-input
v-model="queryParams.data.projectName"
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
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"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="performanceRecordList"
@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="financialInformation"
min-width="180"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.financialInformation)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="设备资产信息"
align="center"
prop="equipmentAssetInformation"
min-width="180"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.equipmentAssetInformation
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="年份"
align="center"
prop="year"
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-view"
@click="viewInfo(scope.row)"
>查看</el-button
> -->
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</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="financialInformation">
<!-- <el-input v-model="form.attachment" placeholder="请输入附件" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList')"
:on-preview="handlePreview"
:on-remove="(file) => handleRemove(file, 'fileList')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitUpload(fileList, 'fileList')
"
:file-list="fileList"
>
<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="equipmentAssetInformation">
<!-- <el-input v-model="form.attachment" placeholder="请输入附件" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitUpload(fileList, 'fileList1')
"
: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="year">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.year"
type="year"
value-format="yyyy"
placeholder="选择年份"
>
</el-date-picker>
</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>
<!--查看 -->
<el-dialog
:title="viewTitle"
:visible.sync="viewOpen"
width="1200px"
append-to-body
@close="closeView"
:close-on-click-modal="false"
>
<!-- 工程业绩记录 -->
<div class="infoTitle">工程业绩记录</div>
<div class="draLine"></div>
<div class="content">
<el-descriptions
class="margin-top"
:column="2"
border
:labelStyle="{
'text-align': 'left',
width: '180px',
height: '50px',
}"
:contentStyle="{ minWidth: '350px' }"
>
<el-descriptions-item>
<template slot="label"> 项目名称 </template>
{{ this.performanceRecordMsg.projectName }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 建设单位 </template>
{{ this.performanceRecordMsg.constructingUnits }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目负责人 </template>
{{ this.performanceRecordMsg.projectLeader }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目所在地 </template>
{{ formatProjectLocation(this.performanceRecordMsg) }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目状态 </template>
{{ projectStatusFormat(this.performanceRecordMsg) }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 开工日期 </template>
{{ this.performanceRecordMsg.commencementDate }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 竣工日期 </template>
{{ this.performanceRecordMsg.completionDate }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 合同价万元 </template>
{{ this.performanceRecordMsg.contractPrice }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目获奖情况 </template>
{{ this.performanceRecordMsg.projectAwardSituation }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 质量评定结果 </template>
{{ this.performanceRecordMsg.qualityAssessmentResults }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 备注 </template>
{{ this.performanceRecordMsg.remark }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 附件 </template>
<template v-if="this.performanceRecordMsg.attachment">
<div
v-for="(item, index) in JSON.parse(
this.performanceRecordMsg.attachment
)"
:key="item + index"
>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile2(item, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-descriptions-item>
</el-descriptions>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listAsset,
getAsset,
addAsset,
updateAsset,
delAsset,
exportAsset,
} from "@/api/enterprise/asset";
import {
listPerformanceRecord,
getPerformanceRecord,
delPerformanceRecord,
addPerformanceRecord,
updatePerformanceRecord,
exportPerformanceRecord,
} from "@/api/enterprise/performanceRecord";
import { getParentQualifications } from "@/api/enterprise/qualifications";
import { getAreasData } from "@/api/areas/index";
import { regionData, codeToText, TextToCode } from "element-china-area-data";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default {
name: "assetCondition",
props: ["enterpriseId"],
data() {
return {
areasOptionProps: {
emitPath: false, //value
checkStrictly: true, //
},
areasOptions: [],
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
performanceRecordList: [],
//
title: "",
viewTitle: "",
//
open: false,
viewOpen: false,
//
projectStatusOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
enterpriseId: null,
projectName: null,
constructingUnits: null,
proCode: null,
projectLeader: null,
projectLocation: null,
projectStatus: null,
commencementDate: null,
completionDate: null,
contractPrice: null,
projectAwardSituation: null,
qualityAssessmentResults: null,
attachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
//
form: {
id: null,
enterpriseId: null,
financialInformation: null,
equipmentAssetInformation: null,
year: null,
},
//
rules: {
projectName: [
{
required: true,
message: "请输入项目名称",
trigger: "blur",
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
constructingUnits: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectLeader: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
contractPrice: [
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
projectAwardSituation: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
qualityAssessmentResults: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
remark: [{ max: 250, message: "字符长度最大为250", trigger: "blur" }],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList: [],
fileList1: [],
performanceRecordMsg: {},
};
},
created() {
this.getList();
},
methods: {
formatProjectLocation(row) {
if (row.projectLocation) {
let provinceCode = row.projectLocation.slice(0, 2);
let cityCode = row.projectLocation.slice(2, 4);
let areaCode = row.projectLocation.slice(4, 6);
if (areaCode != "00") {
return (
codeToText[provinceCode] +
"-" +
codeToText[provinceCode + cityCode] +
"-" +
codeToText[provinceCode + cityCode + areaCode]
);
} else if (cityCode != "00") {
return (
codeToText[provinceCode] + "-" + codeToText[provinceCode + cityCode]
);
} else {
return codeToText[provinceCode];
}
}
},
/** 查询工程业绩记录列表 */
getList() {
this.loading = true;
this.queryParams.data.enterpriseId = this.enterpriseId;
listAsset(this.queryParams).then((response) => {
this.performanceRecordList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
projectStatusFormat(row, column) {
return this.selectDictLabel(this.projectStatusOptions, row.projectStatus);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList = [];
this.form = {
id: null,
enterpriseId: null,
financialInformation: null,
equipmentAssetInformation: null,
year: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
enterpriseId: null,
projectName: null,
constructingUnits: null,
proCode: null,
projectLeader: null,
projectLocation: null,
projectStatus: null,
commencementDate: null,
completionDate: null,
contractPrice: null,
projectAwardSituation: null,
qualityAssessmentResults: null,
remark: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
};
this.resetForm("form");
},
//
viewInfo(row) {
// this.viewTitle = row.projectName.slice(0, row.projectName.indexOf("["));
this.viewTitle = row.projectName;
this.performanceRecordMsg = row;
console.log("performanceRecordMsg", row);
this.viewOpen = true;
},
//
closeView() {
this.performanceRecordMsg = {};
},
/** 搜索按钮操作 */
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;
getAsset(id).then((response) => {
this.form = response.data;
if (this.form.financialInformation) {
this.fileList = JSON.parse(this.form.financialInformation);
}
if (this.form.equipmentAssetInformation) {
this.fileList1 = JSON.parse(this.form.equipmentAssetInformation);
}
this.open = true;
this.title = "修改工程业绩记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.enterpriseId = this.enterpriseId;
this.form.financialInformation = JSON.stringify(this.fileList);
this.form.equipmentAssetInformation = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateAsset(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addAsset(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 delAsset(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
submitUpload(fileList, name) {
console.log(name, fileList);
this[name].push({
name: fileList.name,
fileName: fileList.response.fileName,
url: fileList.response.url,
uid: fileList.uid,
});
console.log(name, this[name]);
},
handleRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
downloadFile(scope, index) {
// console.log(scope);
let file = JSON.parse(scope.row.attachment)[index];
this.handlePreview(file);
},
downloadFile2(info, index) {
console.log(info);
this.handlePreview(info);
},
//
handlePreview(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
});
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
</style>

184
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/basePage.vue

@ -207,8 +207,78 @@
<el-input v-model="form.email" placeholder="请输入电子邮箱" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="注册地区" prop="registeredTerritory">
<el-input
v-model="form.registeredAddress"
placeholder="请输入注册地区"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位性质" prop="unitNature">
<el-input v-model="form.unitNature" placeholder="请输入单位性质" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="营业期限" prop="businessTerm">
<el-date-picker
v-model="form.businessTerm"
type="date"
placeholder="选择营业期限"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label="企业经理信息"
prop="enterpriseManagerInformation"
>
<el-input
v-model="form.enterpriseManagerInformation"
placeholder="请输入企业经理信息"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
label="技术负责人信息"
prop="technicalManagerInformation"
>
<el-input
v-model="form.technicalManagerInformation"
placeholder="请输入技术负责人信息"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="股权结构" prop="ownershipStructure">
<el-input
v-model="form.ownershipStructure"
placeholder="请输入股权结构"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="单位名称变更信息" prop="cnameInformation">
<el-input
v-model="form.cnameInformation"
placeholder="请输入单位名称变更信息"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-form-item label="企业简介" prop="remark">
<el-input
v-model="form.remark"
placeholder="请输入备注"
@ -288,6 +358,114 @@
</el-upload>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="银行开户许可证信息" prop="permitInformation">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handleOpinionPreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList3')"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList3')
"
: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="12">
<el-form-item label="工商年检结果" prop="icResults">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList4')"
:on-preview="handleOpinionPreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList4')"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList4')
"
: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="12">
<el-form-item label="统计证信息" prop="certificateInformation">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList5')"
:on-preview="handleOpinionPreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList5')"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList5')
"
: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="licenseInformation">
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList6')"
:on-preview="handleOpinionPreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList6')"
:before-remove="beforeOpinionRemove"
multiple
:on-exceed="handleOpinionExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList6')
"
:file-list="fileList6"
>
<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 class="btnList">
@ -489,6 +667,10 @@ export default {
},
fileList1: [],
fileList2: [],
fileList3: [],
fileList4: [],
fileList5: [],
fileList6: [],
//
enterpriseTypeOptions: [],
};

405
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/badBehavior.vue

@ -0,0 +1,405 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="creditList">
<el-table-column
label="序号"
type="index"
width="100"
align="center"
fixed
/>
<el-table-column
label="企业名称"
align="center"
prop="enterpriseName"
min-width="120"
/>
<el-table-column
label="人员名称"
align="center"
prop="personnelName"
min-width="120"
/>
<el-table-column
label="不良行为"
align="center"
prop="badBehavior"
min-width="120"
/>
<el-table-column
label="等级"
align="center"
prop="grade"
min-width="120"
/>
<el-table-column
label="说明"
align="center"
prop="explainPeople"
min-width="120"
/>
<el-table-column
label="行政处理"
align="center"
prop="administrativeProcessing"
min-width="120"
/>
<el-table-column
label="扣除值"
align="center"
prop="deductionValue"
min-width="120"
/>
<el-table-column
label="扣分有效期"
align="center"
prop="deductionValuePeriod"
min-width="120"
/>
<el-table-column
label="公告有效期"
align="center"
prop="announcementValuePeriod"
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)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</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="enterpriseName">
<el-input
v-model="form.enterpriseName"
placeholder="请输入企业名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="人员名称" prop="personnelName">
<el-input
v-model="form.personnelName"
placeholder="请输入人员名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="不良行为" prop="badBehavior">
<el-input
v-model="form.badBehavior"
placeholder="请输入不良行为"
/>
<template #label></template>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="等级" prop="grade">
<el-input v-model="form.grade" placeholder="请输入等级" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="说明" prop="explainPeople">
<el-input v-model="form.explainPeople" placeholder="请输入说明" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政处理" prop="administrativeProcessing">
<el-input
v-model="form.administrativeProcessing"
placeholder="请输入行政处理"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="扣除值" prop="deductionValue">
<el-input
v-model="form.deductionValue"
placeholder="请输入扣除值"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="扣分有效期" prop="deductionValuePeriod">
<el-date-picker
style="width: 100%"
v-model="form.deductionValuePeriod"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="公告有效期" prop="announcementValuePeriod">
<el-date-picker
style="width: 100%"
v-model="form.announcementValuePeriod"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</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 {
listBadBehavior,
getBadBehavior,
addBadBehavior,
updateBadBehavior,
delBadBehavior,
exportBadBehavior,
} from "@/api/enterprise/badBehavior";
export default {
name: "badBehavior",
props: ["enterpriseId"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
creditList: [],
//
title: "",
viewTitle: "",
//
open: false,
//
qualificationCategoryOptions: [],
//
statusOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
enterpriseId: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
//
form: {},
//
rules: {
projectName: [
{ required: true, message: "请选择项目名称", trigger: "blur" },
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
behavior: [{ max: 250, message: "字符长度最大为250", trigger: "blur" }],
bonusPoints: [
{ 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",
},
],
},
};
},
created() {
this.getList();
},
methods: {
chooseProjectName(data) {
this.form.recordId = data.id;
this.form.qualificationCategory = data.qualificationCategory;
},
/** 查询动态信用列表 */
getList() {
this.loading = true;
this.queryParams.data.enterpriseId = this.enterpriseId;
listBadBehavior(this.queryParams).then((response) => {
this.creditList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
enterpriseId: this.enterpriseId,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加不良行为";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getBadBehavior(id).then((res) => {
console.log(res);
this.form = res.data;
this.open = true;
this.title = "修改不良行为";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.enterpriseId = this.enterpriseId;
if (this.form.id != null) {
updateBadBehavior(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addBadBehavior(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 delBadBehavior(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

405
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/goodBehavior.vue

@ -0,0 +1,405 @@
<template>
<div class="app-container">
<el-table v-loading="loading" :data="creditList">
<el-table-column
label="序号"
type="index"
width="100"
align="center"
fixed
/>
<el-table-column
label="企业名称"
align="center"
prop="enterpriseName"
min-width="120"
/>
<el-table-column
label="人员名称"
align="center"
prop="personnelName"
min-width="120"
/>
<el-table-column
label="不良行为"
align="center"
prop="badBehavior"
min-width="120"
/>
<el-table-column
label="等级"
align="center"
prop="grade"
min-width="120"
/>
<el-table-column
label="说明"
align="center"
prop="explainPeople"
min-width="120"
/>
<el-table-column
label="行政处理"
align="center"
prop="administrativeProcessing"
min-width="120"
/>
<el-table-column
label="扣除值"
align="center"
prop="deductionValue"
min-width="120"
/>
<el-table-column
label="扣分有效期"
align="center"
prop="deductionValuePeriod"
min-width="120"
/>
<el-table-column
label="公告有效期"
align="center"
prop="announcementValuePeriod"
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)"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除</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="enterpriseName">
<el-input
v-model="form.enterpriseName"
placeholder="请输入企业名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="人员名称" prop="personnelName">
<el-input
v-model="form.personnelName"
placeholder="请输入人员名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="不良行为" prop="badBehavior">
<el-input
v-model="form.badBehavior"
placeholder="请输入不良行为"
/>
<template #label></template>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="等级" prop="grade">
<el-input v-model="form.grade" placeholder="请输入等级" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="说明" prop="explainPeople">
<el-input v-model="form.explainPeople" placeholder="请输入说明" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政处理" prop="administrativeProcessing">
<el-input
v-model="form.administrativeProcessing"
placeholder="请输入行政处理"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="扣除值" prop="deductionValue">
<el-input
v-model="form.deductionValue"
placeholder="请输入扣除值"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="扣分有效期" prop="deductionValuePeriod">
<el-date-picker
style="width: 100%"
v-model="form.deductionValuePeriod"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="公告有效期" prop="announcementValuePeriod">
<el-date-picker
style="width: 100%"
v-model="form.announcementValuePeriod"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</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 {
listGoodBehavior,
getGoodBehavior,
addGoodBehavior,
updateGoodBehavior,
delGoodBehavior,
exportGoodBehavior,
} from "@/api/enterprise/goodBehavior";
export default {
name: "goodBehavior",
props: ["enterpriseId"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
creditList: [],
//
title: "",
viewTitle: "",
//
open: false,
//
qualificationCategoryOptions: [],
//
statusOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
enterpriseId: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
//
form: {},
//
rules: {
projectName: [
{ required: true, message: "请选择项目名称", trigger: "blur" },
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
behavior: [{ max: 250, message: "字符长度最大为250", trigger: "blur" }],
bonusPoints: [
{ 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",
},
],
},
};
},
created() {
this.getList();
},
methods: {
chooseProjectName(data) {
this.form.recordId = data.id;
this.form.qualificationCategory = data.qualificationCategory;
},
/** 查询动态信用列表 */
getList() {
this.loading = true;
this.queryParams.data.enterpriseId = this.enterpriseId;
listGoodBehavior(this.queryParams).then((response) => {
this.creditList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
enterpriseId: this.enterpriseId,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetQueryForm();
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加不良行为";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getGoodBehavior(id).then((res) => {
this.form = res.data;
this.open = true;
this.title = "修改不良行为扣分记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.enterpriseId = this.enterpriseId;
if (this.form.id != null) {
updateGoodBehavior(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
addGoodBehavior(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 delGoodBehavior(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

34
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/components/goodCredit.vue

@ -81,6 +81,18 @@
prop="awardAnnouncementWebsite"
min-width="120"
/>
<el-table-column
label="评价日期"
align="center"
prop="evaluationDate"
min-width="120"
/>
<el-table-column
label="重合同守信用情况"
align="center"
prop="complianceContractsTrustworthiness"
min-width="120"
/>
<el-table-column
label="附件"
align="center"
@ -365,6 +377,28 @@
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="评价日期" prop="evaluationDate">
<el-date-picker
style="width: 100%"
v-model="form.evaluationDate"
type="date"
placeholder="选择评价日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="重合同守信用情况"
prop="complianceContractsTrustworthiness"
>
<el-input
v-model="form.complianceContractsTrustworthiness"
placeholder="请输入重合同守信用情况"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="附件" prop="attachment">
<!-- <el-input v-model="form.attachment" placeholder="请输入附件" /> -->

35
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/index.vue

@ -78,6 +78,28 @@
v-if="activeName === 'dynamicCredit'"
/>
</el-tab-pane>
<el-tab-pane
label="人员行为"
name="personnelBehavior"
:disabled="!routeList[1].isEdit"
:lazy="true"
>
<personnelBehavior
v-if="activeName === 'personnelBehavior'"
:enterpriseId="$route.query.baseDataId"
/>
</el-tab-pane>
<el-tab-pane
label="资产状况信息"
name="assetCondition"
:disabled="!routeList[1].isEdit"
:lazy="true"
>
<assetCondition
v-if="activeName === 'assetCondition'"
:enterpriseId="$route.query.baseDataId"
/>
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['market:eq:index'])"
@ -105,15 +127,6 @@
/>
</el-tab-pane>
</el-tabs>
<!-- <el-tab-pane-->
<!-- v-if="checkPermi(['market:dtxy:index'])"-->
<!-- label="资产状况信息"-->
<!-- name="assetStatus"-->
<!-- :disabled="!routeList[1].isEdit"-->
<!-- :lazy="true"-->
<!-- >-->
<!-- -->
<!-- </el-tab-pane>-->
</div>
</template>
<script>
@ -124,6 +137,8 @@ import resourcesArchives from "./resourcesArchives.vue";
import performanceRecord from "./performanceRecord.vue";
import behaviorAndCredit from "./behaviorAndCredit.vue";
import dynamicCredit from "./dynamicCredit.vue";
import personnelBehavior from './personnelBehavior.vue'
import assetCondition from './assetCondition.vue'
import equipment from "./equipment.vue";
import equipmentManagement from "./equipmentManagement.vue";
@ -144,6 +159,8 @@ export default {
performanceRecord,
behaviorAndCredit,
dynamicCredit,
personnelBehavior,
assetCondition,
equipment,
equipmentManagement
},

44
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/performanceRecord.vue

@ -126,6 +126,30 @@
prop="constructingUnits"
min-width="120"
/>
<el-table-column
label="项目编码"
align="center"
prop="proCode"
min-width="120"
/>
<el-table-column
label="项目规模"
align="center"
prop="projectScale"
min-width="120"
/>
<el-table-column
label="项目主管部门"
align="center"
prop="competentDepartment"
min-width="120"
/>
<el-table-column
label="项目质量"
align="center"
prop="projectQuality"
min-width="120"
/>
<!--
<el-table-column
label="项目负责人"
@ -379,6 +403,26 @@
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目编码" prop="proCode">
<el-input v-model="form.proCode" placeholder="请输入项目编码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目规模" prop="projectScale">
<el-input v-model="form.projectScale" placeholder="请输入项目规模" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目主管部门" prop="competentDepartment">
<el-input v-model="form.competentDepartment" placeholder="请输入项目主管部门" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目质量" prop="projectQuality">
<el-input v-model="form.projectQuality" placeholder="请输入项目质量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="附件" prop="attachment">
<!-- <el-input v-model="form.attachment" placeholder="请输入附件" /> -->

76
jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/personnelBehavior.vue

@ -0,0 +1,76 @@
<template>
<div class="app-container">
<!-- 良好行为-->
<div class="listTitle">
<span>良好行为</span>
<span class="addBtn" @click="handleAdd('0')">
<i class="el-icon-plus"></i>
添加
</span>
</div>
<goodBehavior ref="goodBehavior" :enterpriseId="enterpriseId" />
<!-- 不良行为 -->
<div class="listTitle">
<span>不良行为</span>
<span class="addBtn" @click="handleAdd('1')">
<i class="el-icon-plus"></i>
添加
</span>
</div>
<badBehavior ref="badBehavior" :enterpriseId="enterpriseId" />
</div>
</template>
<script>
import goodBehavior from "./components/goodBehavior.vue";
import badBehavior from "./components/badBehavior.vue";
export default {
name: "personnelBehavior",
props: ["enterpriseId"],
components: {
badBehavior,
goodBehavior,
},
data() {
return {};
},
created() {},
methods: {
handleAdd(key) {
if (key == 0) this.$refs.goodBehavior.handleAdd();
if (key == 1) this.$refs.badBehavior.handleAdd();
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
.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;
}
</style>

2
jwtech-admin-page/src/views/projectStatistics/projectProcess/projectAcceptance.vue

@ -1121,6 +1121,8 @@ export default {
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.proCode = this.proCode;
listAcc(this.queryParams).then((response) => {
console.log("---------验收管理-------------", response);
this.projectAcceptanceMsg.projectName = this.projectName;
this.projectAcceptanceMsg.projectLegal = this.projectLegalPerson;
if (response.records[0]) {

14
jwtech-admin-page/src/views/projectStatistics/projectProcess/qualityControl/options/components/divAssess.vue

@ -34,11 +34,23 @@
min-width="120"
/>
<el-table-column
label="单元工程优良率"
label="单元工程优良率(%)"
align="center"
prop="cellProjectRate"
min-width="120"
/>
<el-table-column
label="关键部位单元优良率(%)"
align="center"
prop="keyComponentUnits"
min-width="150"
/>
<el-table-column
label="重要隐藏单元优良率(%)"
align="center"
prop="hiddenComponentRate"
min-width="150"
/>
<!-- <el-table-column
label="关键部位和重要隐藏单元优良率"
align="center"

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

@ -225,6 +225,12 @@ export default {
zd:{},
adcd:[],
year:"2024",
routeList: [
{
path: "/evaluationEarlyWarning/earlyWarningManage/warning",
routeName: "项目预警管理",
},
],
formattedZd:{},
formattedMs:{},
projectType:[],
@ -234,7 +240,7 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 5,
pageSize: 10,
ids: null,
data: {
projectName: null,
@ -383,7 +389,22 @@ export default {
},
viewInfo(row){
// console.log(row)
this.$router.push("/evaluationEarlyWarning/earlyWarningManage/warning/options?baseDataId="+row.id)
this.routeList[0].routeName = row.projectName;
this.routeList.push({
path: "/evaluationEarlyWarning/earlyWarningManage/warning/options",
routeName: row.proCode,
isEdit: true,
});
//
this.$store.commit("setRouteList", JSON.stringify(this.routeList));
//
this.$router.push({
path:
"/evaluationEarlyWarning/earlyWarningManage/warning/options?baseDataId=" +
row.id,
})
},
eleInit() {
let chartDom = this.$refs.Ele;
@ -465,13 +486,45 @@ export default {
const maxProgressPlan = Math.max(...progressPlanValues);
const maxActual = Math.max(...actualValues);
// undefined
const validIndices = this.adcd
.map((item, index) => codeToText[item] ? index : null)
.filter(index => index !== null);
// xAxis
const filteredData = this.adcd
.filter((item, index) => validIndices.includes(index))
.map(item => codeToText[item]);
// series
const filteredSourceFound = Object.values(this.sourceFound)
.filter((_, index) => validIndices.includes(index));
const indexedSourceFound = filteredSourceFound.map((obj, index) => ({ ...obj, index }));
const indexedActuals = indexedSourceFound.map(obj => obj.actual);
// actuals
const sortedByActuals = indexedSourceFound
.map(obj => ({ ...obj, actual: indexedActuals[obj.index] }))
.sort((a, b) => b.actual - a.actual);
//
const sortedIndices = sortedByActuals.map(obj => obj.index);
// filteredData filteredSourceFound
const sortedFilteredData = sortedIndices.map(index => filteredData[index]);
const sortedFilteredSourceFound = sortedIndices.map(index => filteredSourceFound[index]);
const progressPlans = sortedFilteredSourceFound.map(obj => obj.progressPlan);
const actuals = sortedFilteredSourceFound.map(obj => obj.actual);
// yAxis max
const yAxisMax = Math.max(maxProgressPlan, maxActual);
let chartDom = this.$refs.bar;
let myChart = echarts.init(chartDom);
let option = {
grid: {
left: '15%',
left: '18%',
right: '0%',
top: '15%',
bottom: '20%'
@ -495,7 +548,7 @@ export default {
},
axisLabel: { interval: 0,rotate: 45 },
type: 'category',
data:this.adcd.map(item=>codeToText[item]),
data:sortedFilteredData,
axisPointer: {
type: 'shadow'
},
@ -529,7 +582,7 @@ export default {
return value ;
}
},
data: Object.values(this.sourceFound).map(obj => obj.progressPlan)
data: progressPlans
},
{
name: '实际完成',
@ -540,7 +593,7 @@ export default {
return value;
}
},
data: Object.values(this.sourceFound).map(obj => obj.actual)
data: actuals
}
],
@ -619,7 +672,6 @@ export default {
}
.parent-3{
height: 550px;
width: 97%;
margin: 30px;
}

4
jwtech-admin-page/vue.config.js

@ -33,7 +33,7 @@ module.exports = {
devServer: {
// host: '0.0.0.0',
// host: '192.168.1.104',
host: '127.0.0.1',
host: '192.168.2.108',
// host: '192.168.2.107',
port: 80,
open: true,
@ -43,7 +43,7 @@ module.exports = {
// target: "http://127.0.0.1:18082",
// target: "http://192.168.2.108:18080",
// target: "http://192.168.2.103:18082",
target: "http://127.0.0.1:18082",
target: "http://192.168.2.111:18082",
// target: "http://192.168.2.108:18080",
// target: "http://192.168.1.20:8084",
changeOrigin: true,

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

@ -928,8 +928,9 @@ 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){
Map<String, HashMap<String, BigDecimal>> map = new ConcurrentHashMap<>();
SysUser sysUser = UserUtils.getUser();
String deptId = sysUser.getDeptId();
SysDept sysDept = sysDeptService.get(deptId);
@ -963,8 +964,7 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM
} else {
HashMap<String, BigDecimal> stringBigDecimalHashMap = map.get(adcd);
LambdaQueryWrapper<BsSgcJsjdBuiProgressPlan> lw = new LambdaQueryWrapper<>();
List<BsSgcJsjdBuiProgressPlan> bsSgcJsjdBuiProgressPlans = bsSgcJsjdBuiProgressPlanMapper.selectList(lw.eq(BsSgcJsjdBuiProgressPlan::getProNo, bs.getProNo())
.eq(BsSgcJsjdBuiProgressPlan::getPlanYear, year));
List<BsSgcJsjdBuiProgressPlan> bsSgcJsjdBuiProgressPlans = bsSgcJsjdBuiProgressPlanMapper.selectList(lw.eq(BsSgcJsjdBuiProgressPlan::getProNo, bs.getProNo()));
for (BsSgcJsjdBuiProgressPlan pp : bsSgcJsjdBuiProgressPlans) {
BigDecimal progressPlan = getProgressPlan(pp);
BigDecimal actualCompletion = getActualCompletion(pp);
@ -984,16 +984,19 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
HashMap<String, HashMap<String, BigDecimal>> sortedMap = map.entrySet()
.stream()
List<Map.Entry<String, HashMap<String, BigDecimal>>> entries = new ArrayList<>(map.entrySet());
// 使用 Stream API 对 List 进行排序,并获取最大的 10 个元素
List<Map.Entry<String, HashMap<String, BigDecimal>>> sortedEntries = entries.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 // 保持插入顺序
));
.collect(Collectors.toList());
// 将排序后的 List 转换回 Map
HashMap<String, HashMap<String, BigDecimal>> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, HashMap<String, BigDecimal>> entry : sortedEntries) {
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}

Loading…
Cancel
Save