Browse Source

修改

dev_kxc
xzt 11 months ago
parent
commit
2483249b35
  1. 23
      jwtech-admin-page/src/components/map/index.vue
  2. 958
      jwtech-admin-page/src/components/securityDeposit/index.vue
  3. 129
      jwtech-admin-page/src/views/building/projectInfo/index.vue
  4. 165
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/baseMsg.vue
  5. 2
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/contract/index.vue
  6. 12
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/designChangeInformation.vue
  7. 36
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/firmInfo.vue
  8. 8
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/index.vue
  9. 18
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/peasantWorkerSystem/index.vue
  10. 10
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/projectLegalPersonEvaluation.vue
  11. 44
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/components/divAssess.vue
  12. 2
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/components/viewReport.vue
  13. 4
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/itemDivision/components/itemDivisionManage.vue
  14. 91
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/itemDivision/components/segmentProject.vue
  15. 8
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/itemDivision/components/unitProject.vue
  16. 2
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/annualPlanManagement.vue
  17. 65
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/completionOfInvestment.vue
  18. 61
      jwtech-admin-page/src/views/building/projectInfo/projectProcess/scheduleManagement/options/progressFilling.vue
  19. 544
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/floodControlInspection/editPart.vue
  20. 857
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/floodControlInspection/index.vue
  21. 582
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/floodControlInspection/responsibleUnit.vue
  22. 544
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/performanceInspection/editPart.vue
  23. 857
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/performanceInspection/index.vue
  24. 582
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/performanceInspection/responsibleUnit.vue
  25. 544
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/qualityInspection/editPart.vue
  26. 857
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/qualityInspection/index.vue
  27. 582
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/qualityInspection/responsibleUnit.vue
  28. 544
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/specialInspection/editPart.vue
  29. 857
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/specialInspection/index.vue
  30. 582
      jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/specialInspection/responsibleUnit.vue
  31. 4
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/basePage.vue
  32. 2
      jwtech-admin-page/src/views/marketSupervision/enterpriseInformation/options/index.vue
  33. 1109
      jwtech-admin-page/src/views/project/bid/options/investmentMargin.vue
  34. 11
      jwtech-admin-page/src/views/project/report/index.vue
  35. 2
      jwtech-admin-page/src/views/project/special/options/basePage.vue

23
jwtech-admin-page/src/components/map/index.vue

@ -491,6 +491,29 @@ export default {
that.zoom = that.map.getView().getZoom();
console.log("zomm", that.zoom);
});
//
this.map.on("pointermove", (e) => {
let pixel = this.map.getEventPixel(e.originalEvent);
let feature = this.map.forEachFeatureAtPixel(pixel, (feature) => {
return feature;
});
if (feature != undefined) {
this.map.getTargetElement().style.cursor = "pointer";
} else {
this.map.getTargetElement().style.cursor = "auto";
}
// 线
// if (
// feature == undefined ||
// feature.getGeometry().getType() != "Point"
// ) {
// this.map.getTargetElement().style.cursor = "auto";
// } else {
// this.map.getTargetElement().style.cursor = "pointer";
// }
});
//
this.handleReturnShow();

958
jwtech-admin-page/src/components/securityDeposit/index.vue

@ -0,0 +1,958 @@
<template>
<div>
<el-form
:model="queryParams"
ref="queryForm"
:inline="true"
v-show="showSearch"
>
<el-form-item label="缴存方式" prop="depositMethods">
<el-select
v-model="queryParams.conditionViews[0].value"
placeholder="请选择缴存方式"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in depositMethodsOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="缴存单位名称" prop="guaranteeBankName">
<el-input
v-model="queryParams.conditionViews[1].value"
placeholder="请输入缴存单位名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
>
<template slot="append">
<el-button
type="primary"
slot="append"
icon="el-icon-search"
size="small"
@click="handleQuery"
></el-button>
</template>
</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="[`system:${type}:add`]"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="[`system:${type}:edit`]"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="[`system:${type}:remove`]"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="tbbzjList"
@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="depositMethods"
:formatter="depositMethodsFormat"
min-width="120"
/>
<el-table-column
label="缴存单位"
align="center"
prop="guaranteeBankName"
min-width="120"
/>
<el-table-column
label="缴存金额/保函金额/保险金额/担保金额(万元)"
align="center"
prop="depositMethods"
min-width="180"
>
<template slot-scope="scope">
{{
scope.row.depositAmount +
scope.row.bankGuaranteeLetterAmount +
scope.row.guaranteeCompanyAmount +
scope.row.insuranceAmount
}}
</template>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="[`system:${type}:edit`]"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="[`system:${type}:remove`]"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改投标保证金对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
width="1200px"
append-to-body
:close-on-click-modal="false"
>
<el-row :gutter="15">
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<!-- ==============共有============= -->
<el-row :gutter="15">
<el-col :span="12">
<el-form-item label="缴存方式" prop="depositMethods">
<el-select
v-model="form.depositMethods"
placeholder="请选择缴存方式"
style="width: 100%"
multiple
clearable
>
<el-option
v-for="dict in depositMethodsOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="缴存单位" prop="guaranteeBankName">
<el-input
v-model="form.guaranteeBankName"
placeholder="请输入缴存单位"
/>
</el-form-item>
</el-col>
</el-row>
<!-- ===========不共有============== -->
<!-- 1现金存储 -->
<!-- <el-col :span="12" v-if="hasOne">
<el-form-item label="现金金额" prop="cashAmount">
<el-input v-model="form.cashAmount" placeholder="请输入现金金额">
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col> -->
<el-col :span="12" v-if="hasOne">
<el-form-item label="缴存金额" prop="depositAmount">
<el-input
v-model="form.depositAmount"
placeholder="请输入缴存金额"
>
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasOne">
<el-form-item label="缴存日期" prop="depositAmountDate">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.depositAmountDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择缴存日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasOne">
<el-form-item label="缴存银行名称" prop="depositBank">
<el-input
v-model="form.depositBank"
placeholder="请输入缴存银行名称"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasOne">
<el-form-item label="缴存保证金银行号" prop="depositBankNumber">
<el-input
v-model="form.depositBankNumber"
placeholder="请输入缴存保证金银行号"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasOne">
<el-form-item label="开户行地址" prop="accountBankAddress">
<el-input
v-model="form.accountBankAddress"
placeholder="请输入开户行地址"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasOne">
<el-form-item label="缴存凭证号" prop="voucherNumber">
<el-input
v-model="form.voucherNumber"
placeholder="请输入缴存凭证号"
/>
</el-form-item>
</el-col>
<!-- 2银行保函 -->
<el-col :span="12" v-if="hasTwo">
<el-form-item label="保函编号" prop="bankGuaranteeLetterNo">
<el-input
v-model="form.bankGuaranteeLetterNo"
placeholder="请输入保函编号"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasTwo">
<el-form-item label="银行保函金额" prop="bankGuaranteeLetterAmount">
<el-input
v-model="form.bankGuaranteeLetterAmount"
placeholder="请输入银行保函金额"
>
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasTwo">
<el-form-item label="保函开立日期" prop="bankGuaranteeStartYear">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.bankGuaranteeStartYear"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择保函开立日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasTwo">
<el-form-item label="保函到期日期" prop="bankGuaranteeEndYear">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.bankGuaranteeEndYear"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择保函到期日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<!-- 3工程保证保险 -->
<el-col :span="12" v-if="hasThree">
<el-form-item label="保险公司名称" prop="insuranceCompanyName">
<el-input
v-model="form.insuranceCompanyName"
placeholder="请输入保险公司名称"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasThree">
<el-form-item label="保险合同编号" prop="insuranceNo">
<el-input
v-model="form.insuranceNo"
placeholder="请输入保险合同编号"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasThree">
<el-form-item label="保险金额" prop="insuranceAmount">
<el-input
v-model="form.insuranceAmount"
placeholder="请输入保险金额"
>
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasThree">
<el-form-item label="保险生效日期" prop="insuranceStartTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.insuranceStartTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择保险生效日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasThree">
<el-form-item label="保险失效日期" prop="insuranceEndTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.insuranceEndTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择保险失效日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasThree">
<el-form-item label="支付保险费金额" prop="payAmountInsurance">
<el-input
v-model="form.payAmountInsurance"
placeholder="请输入支付保险费金额"
>
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasThree">
<el-form-item label="支付保险费日期" prop="payAmountInsuranceTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.payAmountInsuranceTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择支付保险费日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<!-- 4工程担保公司保函 -->
<el-col :span="12" v-if="hasFour">
<el-form-item label="担保银行名称" prop="guaranteeCompanyName">
<el-input
v-model="form.guaranteeCompanyName"
placeholder="请输入担保银行名称"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasFour">
<el-form-item
label="担保公司保函函编号"
prop="guaranteeCompanyLetterNo"
>
<el-input
v-model="form.guaranteeCompanyLetterNo"
placeholder="请输入担保公司保函函编号"
/>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasFour">
<el-form-item
label="担保公司担保金额"
prop="guaranteeCompanyAmount"
>
<el-input
v-model="form.guaranteeCompanyAmount"
placeholder="请输入担保公司担保金额"
>
<template slot="append">万元</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasFour">
<el-form-item
label="担保保函开立日期"
prop="guaranteeCompanyStartYear"
>
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.guaranteeCompanyStartYear"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择担保保函开立日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12" v-if="hasFour">
<el-form-item
label="担保保函到期日期"
prop="guaranteeCompanyEndYear"
>
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.guaranteeCompanyEndYear"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择担保保函到期日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<!-- ===========共有============== -->
<el-col :span="24">
<el-form-item label="附件材料" prop="cashStorageFile">
<myUpload :fileList="fileList" />
</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>
export default {
name: "Bzj",
props: ["proNo", "projectCode", "projectName", "formMethods", "type"],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
tbbzjList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
differentiatedDepositAmount: null,
amountPayable: null,
paidAmount: null,
depositMethods: null,
depositBankSalaryDeposit: null,
salaryDepositBankAccount: null,
cashAmount: null,
guaranteeBankName: null,
bankGuaranteeLetterNo: null,
bankGuaranteeLetterAmount: null,
bankGuaranteeStartYear: null,
bankGuaranteeEndYear: null,
guaranteeCompanyName: null,
guaranteeCompanyLetterNo: null,
guaranteeCompanyAmount: null,
guaranteeCompanyStartYear: null,
guaranteeCompanyEndYear: null,
insuranceCompanyName: null,
insuranceNo: null,
insuranceAmount: null,
insuranceStartTime: null,
insuranceEndTime: null,
otherAmount: null,
incomeTime: null,
createUid: null,
updateUid: null,
projectCode: null,
proNo: null,
owerDept: null,
},
conditionViews: [
{
name: "depositMethods",
value: "",
type: "like",
isAnd: "1",
},
{
name: "guaranteeBankName",
value: "",
type: "like",
isAnd: "1",
},
],
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {
depositMethods: [
{
required: true,
message: "请选择缴存方式",
trigger: "blur",
},
],
guaranteeBankName: [
{
required: true,
message: "请输入缴存单位",
trigger: "blur",
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
depositAmount: [
{
pattern:
/(^[1-9]([0-9]{0,6})?(\.[0-9]{1,2})?$|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$))/,
message: "请输入数字,整数7位,可保留两位小数",
trigger: "blur",
},
],
depositAmountDate: [
// {
// required: true,
// message: "",
// trigger: "blur",
// },
],
depositBank: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
depositBankNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
accountBankAddress: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
voucherNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
bankGuaranteeLetterNo: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
bankGuaranteeLetterAmount: [
{ max: 250, message: "字符长度最大为250", 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",
},
],
bankGuaranteeStartYear: [],
bankGuaranteeEndYear: [],
insuranceCompanyName: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
insuranceNo: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
insuranceAmount: [
{ max: 250, message: "字符长度最大为250", 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",
},
],
insuranceStartTime: [],
insuranceEndTime: [],
payAmountInsurance: [
{ max: 250, message: "字符长度最大为250", 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",
},
],
payAmountInsuranceTime: [],
guaranteeCompanyName: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
guaranteeCompanyLetterNo: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
guaranteeCompanyAmount: [
{ max: 250, message: "字符长度最大为250", 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",
},
],
guaranteeCompanyStartYear: [],
guaranteeCompanyEndYear: [],
cashStorageFile: [],
},
//
depositMethodsOptions: [],
fileList: [],
};
},
computed: {
hasOne() {
return this.form.depositMethods?.some((res) => res == 0);
},
hasTwo() {
return this.form.depositMethods?.some((res) => res == 1);
},
hasThree() {
return this.form.depositMethods?.some((res) => res == 2);
},
hasFour() {
return this.form.depositMethods?.some((res) => res == 3);
},
},
created() {
this.getList();
this.getDicts("income_methods").then((response) => {
this.depositMethodsOptions = response.data;
});
},
methods: {
/** 查询投标保证金列表 */
getList() {
this.loading = true;
this.queryParams.data.proNo = this.proNo;
this.queryParams.data.projectCode = this.projectCode;
this.formMethods.list(this.queryParams).then((response) => {
this.tbbzjList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
depositMethodsFormat(row, column) {
if (row.depositMethods?.length > 0) {
let res = "";
row.depositMethods.forEach((item) => {
res =
res + "、" + this.selectDictLabel(this.depositMethodsOptions, item);
});
return res.substr(1);
}
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
differentiatedDepositAmount: null,
amountPayable: null,
paidAmount: null,
depositMethods: null,
depositBankSalaryDeposit: null,
salaryDepositBankAccount: null,
cashAmount: null,
guaranteeBankName: null,
bankGuaranteeLetterNo: null,
bankGuaranteeLetterAmount: null,
bankGuaranteeStartYear: null,
bankGuaranteeEndYear: null,
guaranteeCompanyName: null,
guaranteeCompanyLetterNo: null,
guaranteeCompanyAmount: null,
guaranteeCompanyStartYear: null,
guaranteeCompanyEndYear: null,
insuranceCompanyName: null,
insuranceNo: null,
insuranceAmount: null,
insuranceStartTime: null,
insuranceEndTime: null,
otherAmount: null,
incomeTime: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
projectCode: null,
proNo: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
differentiatedDepositAmount: null,
amountPayable: null,
paidAmount: null,
depositMethods: null,
depositBankSalaryDeposit: null,
salaryDepositBankAccount: null,
cashAmount: null,
guaranteeBankName: null,
bankGuaranteeLetterNo: null,
bankGuaranteeLetterAmount: null,
bankGuaranteeStartYear: null,
bankGuaranteeEndYear: null,
guaranteeCompanyName: null,
guaranteeCompanyLetterNo: null,
guaranteeCompanyAmount: null,
guaranteeCompanyStartYear: null,
guaranteeCompanyEndYear: null,
insuranceCompanyName: null,
insuranceNo: null,
insuranceAmount: null,
insuranceStartTime: null,
insuranceEndTime: null,
otherAmount: null,
incomeTime: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
projectCode: null,
proNo: null,
owerDept: null,
remark: null,
},
conditionViews: [
{
name: "depositMethods",
value: "",
type: "like",
isAnd: "1",
},
{
name: "depositBankSalaryDeposit",
value: "",
type: "like",
isAnd: "1",
},
],
//
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;
this.formMethods.get(id).then((response) => {
this.form = response.data;
if (this.form.cashStorageFile) {
this.fileList = JSON.parse(this.form.cashStorageFile);
}
this.open = true;
this.title = "修改投标保证金";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
this.form.cashStorageFile =
this.fileList.length > 0 ? JSON.stringify(this.fileList) : null;
if (valid) {
if (this.form.id != null) {
this.formMethods.update(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.proNo = this.proNo;
this.form.projectCode = this.projectCode;
this.formMethods.add(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 this.formMethods.del(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 this.formMethods.export(queryParams);
})
.then((response) => {
this.downloadFile(response, true, response.msg);
// this.download(response.msg);
})
.catch(function () {});
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/css/dialog.scss";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

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

@ -378,7 +378,7 @@
</el-form-item>
</el-col>
<!-- 标绘 -->
<el-col :span="12">
<el-col :span="24">
<el-form-item label="项目标绘" prop="allLatitudeLongitudeList">
<el-button type="primary" style="width: 150px" @click="openDraw"
>标绘</el-button
@ -387,13 +387,21 @@
</el-col>
<el-col :span="12">
<el-form-item label="项目法人" prop="projectLegalUnit">
<el-form-item label="项目法人" prop="projectLegalPerson">
<el-input
v-model="form.projectLegalUnit"
v-model="form.projectLegalPerson"
placeholder="请输入项目法人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位负责人电话" prop="projectLegalPhone">
<el-input
v-model="form.projectLegalPhone"
placeholder="请输入单位负责人电话"
/>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="项目负责人" prop="unitLeader">
<el-input
@ -403,18 +411,40 @@
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="项目负责人" prop="projectLegalPerson">
<el-form-item label="项目负责人" prop="projectSuperintendent">
<el-input
v-model="form.projectLegalPerson"
placeholder="请输入项目人"
v-model="form.projectSuperintendent"
placeholder="请输入项目负责人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位负责人电话" prop="projectLegalPhone">
<el-form-item
label="项目负责人电话"
prop="projectSuperintendentPhone"
>
<el-input
v-model="form.projectLegalPhone"
placeholder="请输入单位负责人电话"
v-model="form.projectSuperintendentPhone"
placeholder="请输入项目负责人电话"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位法定代表人" prop="projectUnitLegal">
<el-input
v-model="form.projectUnitLegal"
placeholder="请输入单位法定代表人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="单位法定代表人电话"
prop="projectUnitLegalPhone"
>
<el-input
v-model="form.projectUnitLegalPhone"
placeholder="请输入单位法定代表人电话"
/>
</el-form-item>
</el-col>
@ -1198,6 +1228,64 @@ export default {
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectLegalPhone: [
{
required: true,
message: "请输入单位负责人电话",
trigger: "blur",
},
{
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
projectSuperintendent: [
{
required: true,
message: "请输入项目负责人",
trigger: "blur",
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectSuperintendentPhone: [
{
required: true,
message: "请输入项目负责人电话",
trigger: "blur",
},
{
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
projectUnitLegal: [
{
required: true,
message: "请输入单位法定代表人",
trigger: "blur",
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectUnitLegalPhone: [
{
required: true,
message: "请输入单位法定代表人电话",
trigger: "blur",
},
{
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
constructionAddress: [
{
required: true,
@ -1232,16 +1320,7 @@ export default {
fundingNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectLegalPhone: [
{
required: true,
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
centralArrangedFunds: [
{
required: true,
@ -1615,6 +1694,12 @@ export default {
projectLegalPerson: null,
projectLegalUnit: null,
projectLegalPhone: null,
projectSuperintendent: null,
projectSuperintendentPhone: null,
projectUnitLegal: null,
projectUnitLegalPhone: null,
engineeringGrade: null,
engineeringPurposes: null,
workCategory: null,
@ -1668,6 +1753,12 @@ export default {
projectLegalPerson: null,
projectLegalUnit: null,
projectLegalPhone: null,
projectSuperintendent: null,
projectSuperintendentPhone: null,
projectUnitLegal: null,
projectUnitL: null,
engineeringGrade: null,
engineeringPurposes: null,
workCategory: null,

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

@ -23,25 +23,45 @@
<!-- {{ this.viewTitle }} -->
{{ this.proMsg.projectName + "[" + this.proMsg.proCode + "]" }}
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label"> 项目负责人 </template>
{{ this.proMsg.projectLegalPerson }}
</el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label"> 项目编码 </template>
{{ this.proMsg.proCode }}
</el-descriptions-item>
<el-descriptions-item>
<el-descriptions-item span="2">
<template slot="label"> 项目标绘 </template>
<el-button type="primary" style="width: 150px" @click="openDraw(false)"
>标绘</el-button
>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目法人 </template>
{{ this.proMsg.projectLegalPerson }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 单位负责人电话 </template>
{{ this.proMsg.projectLegalPhone }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目负责人 </template>
{{ this.proMsg.projectSuperintendent }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目负责人电话 </template>
{{ this.proMsg.projectSuperintendentPhone }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 单位法定代表人 </template>
{{ this.proMsg.projectUnitLegal }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 单位法定代表人电话 </template>
{{ this.proMsg.projectUnitLegalPhone }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目类型 </template>
{{ projectTypeFormat(this.proMsg) }}
@ -165,6 +185,7 @@
width="1200px"
append-to-body
:close-on-click-modal="false"
@close="close"
>
<el-row :gutter="15">
<el-form
@ -252,7 +273,7 @@
</el-form-item>
</el-col>
<!-- 标绘 -->
<el-col :span="12">
<el-col :span="24">
<el-form-item label="项目标绘" prop="allLatitudeLongitudeList">
<el-button
type="primary"
@ -262,32 +283,66 @@
>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目法人" prop="projectLegalUnit">
<el-form-item label="项目法人" prop="projectLegalPerson">
<el-input
v-model="form.projectLegalUnit"
v-model="form.projectLegalPerson"
placeholder="请输入项目法人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位负责人电话" prop="projectLegalPhone">
<el-input
v-model="form.projectLegalPhone"
placeholder="请输入单位负责人电话"
/>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="项目负责人" prop="unitLeader">
<el-input v-model="form.unitLeader" placeholder="请输入项目法人" />
<el-input
v-model="form.unitLeader"
placeholder="请输入项目法人"
/>
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="项目负责人" prop="projectLegalPerson">
<el-form-item label="项目负责人" prop="projectSuperintendent">
<el-input
v-model="form.projectLegalPerson"
placeholder="请输入项目人"
v-model="form.projectSuperintendent"
placeholder="请输入项目负责人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位负责人电话" prop="projectLegalPhone">
<el-form-item
label="项目负责人电话"
prop="projectSuperintendentPhone"
>
<el-input
v-model="form.projectLegalPhone"
placeholder="请输入单位负责人电话"
v-model="form.projectSuperintendentPhone"
placeholder="请输入项目负责人电话"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位法定代表人" prop="projectUnitLegal">
<el-input
v-model="form.projectUnitLegal"
placeholder="请输入单位法定代表人"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="单位法定代表人电话"
prop="projectUnitLegalPhone"
>
<el-input
v-model="form.projectUnitLegalPhone"
placeholder="请输入单位法定代表人电话"
/>
</el-form-item>
</el-col>
@ -926,6 +981,64 @@ export default {
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectLegalPhone: [
{
required: true,
message: "请输入单位负责人电话",
trigger: "blur",
},
{
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
projectSuperintendent: [
{
required: true,
message: "请输入项目负责人",
trigger: "blur",
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectSuperintendentPhone: [
{
required: true,
message: "请输入项目负责人电话",
trigger: "blur",
},
{
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
projectUnitLegal: [
{
required: true,
message: "请输入单位法定代表人",
trigger: "blur",
},
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectUnitLegalPhone: [
{
required: true,
message: "请输入单位法定代表人电话",
trigger: "blur",
},
{
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
constructionAddress: [
{
required: true,
@ -960,16 +1073,7 @@ export default {
fundingNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectLegalPhone: [
{
required: true,
type: "string",
pattern:
/^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/,
message: "请输入正确的手机号",
trigger: "blur",
},
],
centralArrangedFunds: [
{
required: true,
@ -1323,6 +1427,11 @@ export default {
this.loading = false;
});
},
close() {
this.potMsg = [];
this.lineMsg = [];
this.allDrawMsg = [];
},
//
reset() {
this.form = {
@ -1333,6 +1442,12 @@ export default {
projectLegalPerson: null,
projectLegalUnit: null,
projectLegalPhone: null,
projectSuperintendent: null,
projectSuperintendentPhone: null,
projectUnitLegal: null,
projectUnitLegalPhone: null,
engineeringGrade: null,
engineeringPurposes: null,
workCategory: null,

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

@ -626,7 +626,7 @@
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:htgl:htys'])"
label="合同验收"
label="合同完工验收"
name="acceptancePage"
:lazy="true"
>

12
jwtech-admin-page/src/views/building/projectInfo/projectProcess/designChangeInformation.vue

@ -148,13 +148,13 @@
prop="changeApplicant"
min-width="120"
/>
<el-table-column
<!-- <el-table-column
label="审批状态"
align="center"
prop="approvalStatus"
:formatter="approvalStatusFormat"
min-width="120"
/>
/> -->
<el-table-column
label="审批时间"
align="center"
@ -275,7 +275,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-col :span="12">
<el-form-item label="审批状态">
<el-radio-group v-model="form.approvalStatus">
<el-radio
@ -286,7 +286,7 @@
>
</el-radio-group>
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="12">
<el-form-item label="审批时间" prop="approvalTime">
<el-date-picker
@ -373,10 +373,10 @@
<template slot="label"> 变更申请人 </template>
{{ this.designMsg.changeApplicant }}
</el-descriptions-item>
<el-descriptions-item>
<!-- <el-descriptions-item>
<template slot="label"> 审批状态 </template>
{{ approvalStatusFormat(this.designMsg) }}
</el-descriptions-item>
</el-descriptions-item> -->
<el-descriptions-item>
<template slot="label"> 审批时间 </template>
{{ this.designMsg.approvalTime }}

36
jwtech-admin-page/src/views/building/projectInfo/projectProcess/firmInfo.vue

@ -16,26 +16,52 @@
</div>
<el-row :gutter="25">
<el-form :model="firmInfo" label-width="110px" label-position="top">
<el-col :span="24">
<el-col :span="12">
<el-form-item label="项目法人">
<el-input
v-model="firmInfo.projectLegalUnit"
v-model="firmInfo.projectLegalPerson"
:readonly="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位负责人电话">
<el-input
v-model="firmInfo.projectLegalPhone"
:readonly="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="项目负责人">
<el-input
v-model="firmInfo.projectLegalPerson"
v-model="firmInfo.projectSuperintendent"
:readonly="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系方式">
<el-form-item label="项目负责人电话">
<el-input
v-model="firmInfo.projectLegalPhone"
v-model="firmInfo.projectSuperintendentPhone"
:readonly="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位法定代表人">
<el-input
v-model="firmInfo.projectUnitLegal"
:readonly="true"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位法定代表人电话">
<el-input
v-model="firmInfo.projectUnitLegalPhone"
:readonly="true"
></el-input>
</el-form-item>

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

@ -51,7 +51,7 @@
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:htxx:index'])"
label="合同信息"
label="合同管理"
name="contract"
:disabled="!routeList[1].isEdit"
:lazy="true"
@ -95,7 +95,7 @@
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:bgxx:index'])"
label="变更信息"
label="设计变更管理"
name="designChangeInformation"
:disabled="!routeList[1].isEdit"
:lazy="true"
@ -107,7 +107,7 @@
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:jdgl:index'])"
label="进度管理"
label="进度控制"
name="scheduleManagement"
:disabled="!routeList[1].isEdit"
:lazy="true"
@ -133,7 +133,7 @@
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:xmfrpj:index'])"
label="项目法人评价"
label="项目法人履职评价"
name="projectLegalPersonEvaluation"
:disabled="!routeList[1].isEdit"
:lazy="true"

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

@ -22,6 +22,14 @@
>
<clockingIn :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:nmgsmzgl:nmggzzfb'])"
label="农民工工资支付表"
name="payroll"
:lazy="true"
>
<payroll :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:nmgsmzgl:gzbzjzh'])"
label="农民工工资保证金"
@ -30,6 +38,7 @@
>
<marginAccount :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:nmgsmzgl:nmggzbzjzyzh'])"
label="农民工工资专用账户"
@ -38,14 +47,7 @@
>
<specificMarginAccount :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:nmgsmzgl:nmggzzfb'])"
label="农民工工资支付表"
name="payroll"
:lazy="true"
>
<payroll :proNo="proNo" :proCode="proCode" />
</el-tab-pane>
<el-tab-pane
v-if="checkPermi(['building:nmgsmzgl:gckzfdb'])"
label="工程款支付担保"

10
jwtech-admin-page/src/views/building/projectInfo/projectProcess/projectLegalPersonEvaluation.vue

@ -165,7 +165,7 @@
@pagination="getList"
/>
<!-- 添加或修改项目法人评价对话框 -->
<!-- 添加或修改项目法人履职评价对话框 -->
<el-dialog
:title="title"
:visible.sync="open"
@ -487,7 +487,7 @@ export default {
showSearch: true,
//
total: 0,
//
//
evaluateList: [],
//
title: "",
@ -574,7 +574,7 @@ export default {
};
this.fileList = [];
},
/** 查询项目法人评价列表 */
/** 查询项目法人履职评价列表 */
getList() {
this.loading = true;
listEvaluate(this.queryParams).then((response) => {
@ -668,7 +668,7 @@ export default {
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目法人评价";
this.title = "添加项目法人履职评价";
},
/** 修改按钮操作 */
handleUpdate(row) {
@ -692,7 +692,7 @@ export default {
);
this.totalScore = startScore;
this.open = true;
this.title = "修改项目法人评价";
this.title = "修改项目法人履职评价";
});
},
/** 提交按钮 */

44
jwtech-admin-page/src/views/building/projectInfo/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"
@ -55,6 +67,7 @@
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
@ -178,14 +191,33 @@
<template slot="append">%</template>
</el-input>
</el-form-item>
<el-form-item label="关键部位和重要隐藏单元优良率" prop="majorCellRate">
<el-form-item label="关键部位单元优良率" prop="keyComponentUnits">
<el-input
v-model="form.keyComponentUnits"
placeholder="请输入关键部位单元优良率"
>
<template slot="append">%</template>
</el-input>
</el-form-item>
<el-form-item label="重要隐藏单元优良率" prop="hiddenComponentRate">
<el-input
v-model="form.hiddenComponentRate"
placeholder="请输入重要隐藏单元优良率"
>
<template slot="append">%</template>
</el-input>
</el-form-item>
<!-- <el-form-item label="关键部位和重要隐藏单元优良率" prop="majorCellRate">
<el-input
v-model="form.majorCellRate"
placeholder="请输入关键部位和重要隐藏单元优良率"
>
<template slot="append">%</template>
</el-input>
</el-form-item>
</el-form-item> -->
<el-form-item label="分部工程质量评定表" prop="divisionalAttachment">
<!-- <el-input
v-model="form.divisionalAttachment"
@ -249,6 +281,8 @@ export default {
evaluateTime: null,
qualityLevel: null,
cellProjectRate: null,
keyComponentUnits: null,
hiddenComponentRate: null,
majorCellRate: null,
divisionalAttachment: null,
createUid: null,
@ -380,6 +414,8 @@ export default {
evaluateTime: null,
qualityLevel: null,
cellProjectRate: null,
keyComponentUnits: null,
hiddenComponentRate: null,
majorCellRate: null,
divisionalAttachment: null,
createUid: null,
@ -405,6 +441,8 @@ export default {
evaluateTime: null,
qualityLevel: null,
cellProjectRate: null,
keyComponentUnits: null,
hiddenComponentRate: null,
majorCellRate: null,
divisionalAttachment: null,
createUid: null,

2
jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/components/viewReport.vue

@ -6,7 +6,7 @@
:header-cell-style="{ border: 'solid 1px #D9D9D9' }"
>
<el-table-column label="序号" type="index" width="100" align="center" />
<el-table-column label="项目法人委托检测" align="center">
<el-table-column label="项目法人对比检测" align="center">
<el-table-column label="报告总数" align="center" prop="total0" />
<el-table-column
label="不合格报告数"

4
jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/itemDivision/components/itemDivisionManage.vue

@ -318,8 +318,8 @@ export default {
}
.el-dialog {
margin-top: 4vh !important;
height: 850px;
overflow: auto;
min-height: 850px;
// overflow: auto;
.el-dialog__footer {
// position: fixed;

91
jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/itemDivision/components/segmentProject.vue

@ -1,7 +1,7 @@
<template>
<div style="padding-bottom: 20px">
<div class="formBox">
<el-form ref="form" :model="form" :rules="rules" label-width="180px">
<el-form ref="form" :model="form" :rules="rules" label-width="210px">
<el-row>
<el-col :span="24">
<el-form-item label="单位工程名称" prop="unitProjectName">
@ -72,6 +72,29 @@
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="关键部分单元工程数量(个)"
prop="keyUnitProject"
>
<el-input
v-model="form.keyUnitProject"
placeholder="请输入关键部分单元工程数量"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item
label="重要隐藏单元工程数量(个)"
prop="hiddenUnitProjects"
>
<el-input
v-model="form.hiddenUnitProjects"
placeholder="请输入重要隐藏单元工程数量"
/>
</el-form-item>
</el-col>
<!-- <el-col :span="12" style="height: 51px">
<div
style="
@ -132,12 +155,8 @@
<span>分部工程划分</span>
</div>
<el-table
v-loading="loading"
:data="subProjectList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table v-loading="loading" :data="subProjectList">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column
@ -166,7 +185,17 @@
align="center"
prop="unitNumber"
/>
<el-table-column label="单位id" align="center" prop="unitId" />
<el-table-column
label="关键部分单元工程数量(个)"
align="center"
prop="keyUnitProject"
/>
<el-table-column
label="重要隐藏单元工程数量(个)"
align="center"
prop="hiddenUnitProjects"
/>
<!-- <el-table-column label="单位id" align="center" prop="unitId" /> -->
<el-table-column
label="操作"
align="center"
@ -213,7 +242,7 @@
ref="editForm"
:model="editForm"
:rules="rules"
label-width="150px"
label-width="210px"
>
<el-form-item label="单位工程名称" prop="unitProjectName">
<!-- <el-input
@ -274,6 +303,22 @@
placeholder="请输入单元工程数量"
/>
</el-form-item>
<el-form-item label="关键部分单元工程数量(个)" prop="keyUnitProject">
<el-input
v-model="editForm.keyUnitProject"
placeholder="请输入关键部分单元工程数量"
/>
</el-form-item>
<el-form-item
label="重要隐藏单元工程数量(个)"
prop="hiddenUnitProjects"
>
<el-input
v-model="editForm.hiddenUnitProjects"
placeholder="请输入重要隐藏单元工程数量"
/>
</el-form-item>
<!-- <el-form-item label="单位id" prop="unitId">
<el-input v-model="editForm.unitId" placeholder="请输入单位id" />
</el-form-item> -->
@ -378,8 +423,32 @@ export default {
unitNumber: [
{ required: true, message: "请输入单元工程数量", trigger: "blur" },
{
pattern: /^[1-9]\d*$/,
message: "请输入正整数,不包含0",
pattern: /^[0-9]\d*$/,
message: "请输入正整数",
trigger: "blur",
},
],
keyUnitProject: [
{
required: true,
message: "请输入关键部分单元工程数量",
trigger: "blur",
},
{
pattern: /^[0-9]\d*$/,
message: "请输入正整数",
trigger: "blur",
},
],
hiddenUnitProjects: [
{
required: true,
message: "请输入重要隐藏单元工程数量",
trigger: "blur",
},
{
pattern: /^[0-9]\d*$/,
message: "请输入正整数",
trigger: "blur",
},
],

8
jwtech-admin-page/src/views/building/projectInfo/projectProcess/qualityControl/options/itemDivision/components/unitProject.vue

@ -31,12 +31,8 @@
<div class="listTitle" style="margin-top: 0">
<span>单位工程划分</span>
</div>
<el-table
v-loading="loading"
:data="unitProjectList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table v-loading="loading" :data="unitProjectList">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" type="index" width="50" align="center" />
<el-table-column label="所属标段" align="center" prop="belongsSection" />

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

@ -738,6 +738,8 @@ export default {
/** 查询进度计划列表 */
getList() {
this.loading = true;
this.queryParams.data.proCode = this.proCode;
this.queryParams.data.proNo = this.proNo;
listPlan(this.queryParams).then((response) => {
this.planList = response.records;
this.total = response.total;

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

@ -423,7 +423,8 @@
>
</el-date-picker>
</div>
<div class="main" v-if="detailMsg.id && detailMsg.status != '0'">
<!-- <div class="main" v-if="detailMsg.id && detailMsg.status != '0'"> -->
<div class="main" v-if="detailMsg.id">
<div class="time">{{ detailMsg.stageTime }}</div>
<div class="msg">
<span>
@ -493,11 +494,20 @@
</div>
</div>
</div>
<div class="con_middle" v-if="detailMsgList.length !== 0">
<!-- <template v-for="item in detailMsgList"> -->
<!-- <div
class="con_middle_item"
v-if="item.status != '0'"
:key="item.id"
> -->
<div
class="con_middle"
v-if="detailMsg.id && detailMsg.status != '0'"
class="con_middle_item"
v-for="item in detailMsgList"
:key="item.id"
>
<div class="time">{{ detailMsg.stageTime }}</div>
<div class="time">{{ item.stageTime }}</div>
<div class="msg">
年度目标
<span class="green">
@ -505,13 +515,23 @@
</span>
万元已完成
<span class="red">
{{ sumAmount(planDetailList[0], "v") }}</span
{{
sumAmount(
planDetailList[0],
"v",
new Date(item.stageTime).getMonth() + 1
)
}}</span
>
万元投资完成率
<span class="green">
{{
(
(sumAmount(planDetailList[0], "v") /
(sumAmount(
planDetailList[0],
"v",
new Date(detailMsg.stageTime).getMonth() + 1
) /
sumAmount(planDetailList[0], "p")) *
100
).toFixed(2)
@ -523,21 +543,21 @@
<p style="margin-bottom: 20px">
<span>形象进度描述</span>
<span>{{
detailMsg.descriptionProgress
? detailMsg.descriptionProgress
: "-"
item.descriptionProgress ? item.descriptionProgress : "-"
}}</span>
</p>
<template v-if="detailMsg.sceneImages">
<template v-if="item.sceneImages">
<autoImg
v-for="item in JSON.parse(detailMsg.sceneImages)"
:key="item.uid"
v-for="sub in JSON.parse(item.sceneImages)"
:key="sub.uid"
style="width: 200px; height: 200px; margin-right: 10px"
:authSrc="item.fileName"
:authSrc="sub.fileName"
/>
</template>
</div>
</div>
<!-- </template> -->
</div>
<div v-else class="nullData">暂无数据~</div>
<!-- <div class="con_right">
<el-button type="success" size="mini" @click="openProgressForm">
@ -578,6 +598,7 @@
value-format="yyyy-MM"
placeholder="选择本期时间"
readonly
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
@ -732,6 +753,12 @@ export default {
},
data() {
return {
//
pickerOptions: {
disabledDate: (time) => {
return time.getTime() > new Date().getTime();
},
},
projectTypeOptionProps: {
emitPath: false,
checkStrictly: true, //
@ -843,6 +870,7 @@ export default {
jianwei: "jwtech " + getToken(),
},
detailMsg: {},
detailMsgList: [],
stageTime: "",
};
},
@ -1005,9 +1033,12 @@ export default {
// console.log(444, res);
if (res.records.length > 0) {
this.detailMsg = res.records[0];
this.detailMsgList = res.records;
console.log("detailMsg", this.detailMsg);
console.log("detailMsgList", this.detailMsgList);
} else {
this.detailMsg = {};
this.detailMsgList = [];
}
});
},
@ -1032,6 +1063,8 @@ export default {
/** 查询进度计划列表 */
getList() {
this.loading = true;
this.queryParams.data.proCode = this.proCode;
this.queryParams.data.proNo = this.proNo;
listPlan(this.queryParams).then((response) => {
this.planList = response.records;
this.total = response.total;
@ -1183,6 +1216,7 @@ export default {
this.msgSuccess("审核通过成功");
this.getDetail(this.progressPlanId);
this.getDetailMsg();
this.progressForm_open = false;
}
});
},
@ -1338,6 +1372,10 @@ export default {
flex: 1;
// border: 1px solid #ccc;
padding: 0 50px;
border: 1px solid #ccc;
margin: 0 20px;
overflow: auto;
.con_middle_item {
.time {
color: #3a5068;
font-size: 20px;
@ -1374,6 +1412,7 @@ export default {
}
}
}
}
.nullData {
flex: 1;
}

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

@ -474,8 +474,13 @@
</div>
</div>
</div>
<div class="con_middle" v-if="detailMsg.id">
<div class="time">{{ detailMsg.stageTime }}</div>
<div class="con_middle" v-if="detailMsgList.length !== 0">
<div
class="con_middle_item"
v-for="item in detailMsgList"
:key="item.id"
>
<div class="time">{{ item.stageTime }}</div>
<div class="msg">
年度目标
<span class="green">
@ -483,13 +488,23 @@
</span>
万元已完成
<span class="red">
{{ sumAmount(planDetailList[0], "v") }}</span
{{
sumAmount(
planDetailList[0],
"v",
new Date(item.stageTime).getMonth() + 1
)
}}</span
>
万元投资完成率
<span class="green">
{{
(
(sumAmount(planDetailList[0], "v") /
(sumAmount(
planDetailList[0],
"v",
new Date(detailMsg.stageTime).getMonth() + 1
) /
sumAmount(planDetailList[0], "p")) *
100
).toFixed(2)
@ -501,21 +516,20 @@
<p style="margin-bottom: 20px">
<span>形象进度描述</span>
<span>{{
detailMsg.descriptionProgress
? detailMsg.descriptionProgress
: "-"
item.descriptionProgress ? item.descriptionProgress : "-"
}}</span>
</p>
<template v-if="detailMsg.sceneImages">
<template v-if="item.sceneImages">
<autoImg
v-for="item in JSON.parse(detailMsg.sceneImages)"
:key="item.uid"
v-for="sub in JSON.parse(item.sceneImages)"
:key="sub.uid"
style="width: 200px; height: 200px; margin-right: 10px"
:authSrc="item.fileName"
:authSrc="sub.fileName"
/>
</template>
</div>
</div>
</div>
<div v-else class="nullData">暂无数据~</div>
<div class="con_right">
<el-button type="success" size="mini" @click="openProgressForm">
@ -555,6 +569,7 @@
type="month"
value-format="yyyy-MM"
placeholder="选择本期时间"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
@ -691,6 +706,12 @@ export default {
},
data() {
return {
//
pickerOptions: {
disabledDate: (time) => {
return time.getTime() > new Date().getTime();
},
},
projectTypeOptionProps: {
emitPath: false,
checkStrictly: true, //
@ -802,6 +823,7 @@ export default {
jianwei: "jwtech " + getToken(),
},
detailMsg: {},
detailMsgList: [],
stageTime: "",
};
},
@ -971,9 +993,12 @@ export default {
// console.log(444, res);
if (res.records.length > 0) {
this.detailMsg = res.records[0];
this.detailMsgList = res.records;
console.log("detailMsg", this.detailMsg);
console.log("detailMsgList", this.detailMsgList);
} else {
this.detailMsg = {};
this.detailMsgList = [];
}
});
},
@ -987,9 +1012,10 @@ export default {
this.planDetailList = response.records;
});
},
sumAmount(row, key) {
sumAmount(row, key, month) {
let res = 0;
for (let index = 1; index <= 12; index++) {
let monthNo = month || 12;
for (let index = 1; index <= monthNo; index++) {
res = res + row[key + index];
// console.log(99999, row[key + index]);
}
@ -998,6 +1024,8 @@ export default {
/** 查询进度计划列表 */
getList() {
this.loading = true;
this.queryParams.data.proCode = this.proCode;
this.queryParams.data.proNo = this.proNo;
listPlan(this.queryParams).then((response) => {
this.planList = response.records;
this.total = response.total;
@ -1285,9 +1313,13 @@ export default {
flex: 1;
// border: 1px solid #ccc;
padding: 0 50px;
border: 1px solid #ccc;
margin: 0 20px;
overflow: auto;
.con_middle_item {
.time {
color: #3a5068;
font-size: 20px;
font-size: 25px;
font-weight: bold;
text-align: center;
margin: 30px 0;
@ -1321,6 +1353,7 @@ export default {
}
}
}
}
.nullData {
flex: 1;
}

544
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/floodControlInspection/editPart.vue

@ -0,0 +1,544 @@
<template>
<div>
<div style="text-align: right; margin-bottom: 10px">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:rectification:add']"
>新增整改通知书</el-button
>
</div>
<el-table v-loading="loading" border :data="rectificationList">
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="发文单位"
align="center"
prop="issuingUnit"
min-width="120"
/>
<el-table-column
label="文号"
align="center"
prop="documentNumber"
min-width="120"
/>
<el-table-column
label="通知生效时间"
align="center"
prop="noticeBegainTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.noticeBegainTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="整改通知书"
align="center"
prop="rectificationAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.rectificationAttachment
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="责任单位"
align="center"
prop="unitArray"
:formatter="unitArrayFormat"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<!-- <el-table-column
label="整改相关附件"
align="center"
prop="ccc"
min-width="120"
/> -->
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['warn:rectification:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:rectification: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="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="发文单位" prop="issuingUnit">
<el-input v-model="form.issuingUnit" placeholder="请输入发文单位" />
</el-form-item>
<el-form-item label="文号" prop="documentNumber">
<el-input v-model="form.documentNumber" placeholder="请输入文号" />
</el-form-item>
<el-form-item label="通知生效时间" prop="noticeBegainTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.noticeBegainTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择通知生效时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="整改通知书" prop="rectificationAttachment">
<!-- <el-input v-model="form.rectificationAttachment" placeholder="请输入整改通知书" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-form>
<responsibleUnit
v-if="open && form.id"
:isAdd="isAdd"
:inspectionId="inspectionId"
:rectificationId="form.id"
:proNo="proNo"
:proCode="proCode"
/>
<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,
delRectification,
addRectification,
updateRectification,
exportRectification,
} from "@/api/warn/rectification";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import responsibleUnit from "./responsibleUnit.vue";
export default {
name: "Rectification",
props: ["inspectionId", "proNo", "proCode"],
components: {
responsibleUnit,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
rectificationList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
issuingUnit: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
documentNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isAdd: false,
};
},
created() {
this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
/** 查询整改通知书列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
listRectification(this.queryParams).then((response) => {
this.rectificationList = response.records;
console.log("this.rectificationList", this.rectificationList);
this.total = response.total;
this.loading = false;
});
},
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
unitArrayFormat(row) {
let res = "";
row.unitArray?.forEach((item) => {
// this.unitOptions.forEach((sub) => {
// if (item === sub.enterpriseName) {
res = res + item + "、";
// }
// });
});
return res;
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: 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.isAdd = true;
this.open = true;
this.title = "添加整改通知书";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isAdd = false;
const id = row.id || this.ids;
getRectification(id).then((response) => {
this.form = response.data;
if (this.form.rectificationAttachment) {
this.fileList1 = JSON.parse(this.form.rectificationAttachment);
}
this.open = true;
this.title = "修改整改通知书";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.rectificationAttachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateRectification(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
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("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

857
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/floodControlInspection/index.vue

@ -0,0 +1,857 @@
<template>
<div class="app-container">
<!-- 面包屑 -->
<el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
v-for="(item, index) in routeList"
:key="item + index"
:to="{ path: item.path }"
>{{ item.routeName }}</el-breadcrumb-item
>
</el-breadcrumb>
<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 label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="queryParams.data.inspectionTypes"
placeholder="请选择监督检查类型"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item> -->
<el-form-item>
<!-- <el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
> -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:inspections: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="['warn:inspections: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="['warn:inspections:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="inspectionsList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="项目名称"
align="center"
prop="projectName"
min-width="120"
/>
<!-- <el-table-column
label="监督检查类型"
align="center"
prop="inspectionTypes"
:formatter="inspectionTypesFormat"
min-width="120"
/> -->
<el-table-column
label="检查时间"
align="center"
prop="inspectionTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.inspectionTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="检查人"
align="center"
prop="inspectionPerson"
min-width="120"
/>
<el-table-column
label="通知文件"
align="center"
prop="noticeAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.noticeAttachment)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.noticeAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="检查表"
align="center"
prop="checklist"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.checklist)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.checklist, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="整改报告"
align="center"
prop="rectificationReport"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.rectificationReport)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationReport, 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="['warn:inspections:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:inspections: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="1400px"
append-to-body
:close-on-click-modal="false"
>
<div class="listTitle" style="margin-top: 0">
<span>防洪度汛检查信息</span>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="项目名称" prop="projectName">
<el-select
v-model="form.projectName"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in projectNameOptions"
:key="dict.projectName + dict.id"
:label="dict.projectName + '[' + dict.proCode + ']'"
:value="dict.projectName + '[' + dict.proCode + ']'"
@click.native="getId(dict)"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="form.inspectionTypes"
placeholder="请选择监督检查类型"
style="width: 100%"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="检查时间" prop="inspectionTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.inspectionTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择检查时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="检查人" prop="inspectionPerson">
<el-input
v-model="form.inspectionPerson"
placeholder="请输入检查人"
/>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item label="检查通知" prop="noticeAttachment">
<!-- <el-input
v-model="form.noticeAttachment"
placeholder="请输入通知文件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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="8">
<el-form-item label="整改通知" prop="checklist">
<!-- <el-input v-model="form.checklist" placeholder="请输入检查表" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList2')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList2')
"
:file-list="fileList2"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="整改报告" prop="rectificationReport">
<!-- <el-input
v-model="form.rectificationReport"
placeholder="请输入整改报告"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList3')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
: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-row>
</el-form>
<div v-if="form.id">
<div class="listTitle" style="margin-top: 0">
<span>责令限期整改通知书列表</span>
</div>
<editPart
:inspectionId="form.id"
:proNo="form.proNo"
:proCode="form.proCode"
/>
</div>
<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 {
listInspections,
getInspections,
delInspections,
addInspections,
updateInspections,
exportInspections,
} from "@/api/warn/inspections";
import { listInfo, getInfo } from "@/api/build/projectInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import editPart from "./editPart.vue";
export default {
name: "Inspections",
components: {
editPart,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
inspectionsList: [],
//
title: "",
//
open: false,
//
inspectionTypesOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
othersParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
isMajor: null,
projectName: null,
unitLeader: null,
projectLegalPerson: null,
projectLegalUnit: null,
projectLegalPhone: null,
engineeringGrade: null,
engineeringPurposes: null,
workCategory: null,
constructionAddress: null,
constructionMode: null,
constructionNature: null,
constructionContent: null,
adcd: null,
basin: null,
projectType: null,
centralArrangedFunds: null,
centralArrangedFundsRate: null,
provincialFunding: null,
provincialFundingRate: null,
cityLevelFunds: null,
cityLevelFundsRate: null,
countyLevelFunds: null,
countyLevelFundsRate: null,
townshipInvestments: null,
townshipInvestmentsRate: null,
isMajorProject: null,
investmentSubject: null,
constructionPhase: null,
fundingNumber: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {
inspectionPerson: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectName: [
{
required: true,
message: "请选择项目",
trigger: "blur",
},
],
},
//
projectNameOptions: [],
proCode: "",
proNo: "",
//
routeList: [
{
path: "/evaluationEarlyWarning/supervisionInspection/regulatoryInspection",
routeName: "防洪度汛检查",
},
],
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
fileList2: [],
fileList3: [],
};
},
created() {
this.getList();
this.getDicts("supervisory_inspection_type").then((response) => {
this.inspectionTypesOptions = response.data;
});
listInfo(this.othersParams).then((response) => {
this.projectNameOptions = response.records;
});
},
methods: {
getId(res) {
// console.log(res)
getInfo(res.id).then((response) => {
console.log(response.data);
this.proNo = response.data.proNo;
this.proCode = response.data.proCode;
});
},
/** 查询监管检查列表 */
getList() {
this.loading = true;
this.queryParams.data.menuType = "3";
listInspections(this.queryParams).then((response) => {
this.inspectionsList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
inspectionTypesFormat(row, column) {
return this.selectDictLabel(
this.inspectionTypesOptions,
row.inspectionTypes
);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.form = {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "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;
getInspections(id).then((response) => {
this.form = response.data;
this.form.projectName =
this.form.projectName + "[" + this.form.proCode + "]";
if (this.form.noticeAttachment) {
this.fileList1 = JSON.parse(this.form.noticeAttachment);
}
if (this.form.checklist) {
this.fileList2 = JSON.parse(this.form.checklist);
}
if (this.form.rectificationReport) {
this.fileList3 = JSON.parse(this.form.rectificationReport);
}
this.open = true;
this.title = "修改防洪度汛检查";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.proNo) {
this.form.proNo = this.proNo;
}
if (this.proCode) {
this.form.proCode = this.proCode;
}
this.form.noticeAttachment = JSON.stringify(this.fileList1);
this.form.checklist = JSON.stringify(this.fileList2);
this.form.rectificationReport = JSON.stringify(this.fileList3);
if (this.form.id != null) {
updateInspections(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.menuType = "3";
addInspections(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 delInspections(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
::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>

582
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/floodControlInspection/responsibleUnit.vue

@ -0,0 +1,582 @@
<template>
<div>
<!-- <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="['warn:zrdw: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="['warn:zrdw: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="['warn:zrdw:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['warn:zrdw:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> -->
<el-table v-loading="loading" :data="zrdwList" border>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="责任单位"
align="center"
prop="unitId"
:formatter="unitIdFormat"
min-width="120"
/>
<el-table-column
label="整改完成内容"
align="center"
prop="rectificationSituation"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<el-table-column
label="整改相关附件"
align="center"
prop="attachment"
min-width="120"
>
<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="downloadFile(scope.row.attachment, 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="['warn:zrdw:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:zrdw:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-button
type="text"
icon="el-icon-plus"
size="medium"
@click="handleAdd"
v-hasPermi="['warn:zrdw:add']"
>添加责任单位</el-button
>
<!-- <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="1000px"
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="责任单位" prop="unitId">
<!-- <el-input v-model="form.unitId" placeholder="请输入单位id" /> -->
<el-select
v-model="form.unitId"
placeholder="请选择责任单位"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in unitOptions"
:key="dict.id + dict.enterpriseName"
:label="dict.enterpriseName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="整改完成内容" prop="rectificationSituation">
<el-input
v-model="form.rectificationSituation"
placeholder="请输入整改完成内容"
type="textarea"
/>
<!-- <el-select
v-model="form.rectificationSituation"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in rectificationSituationOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> -->
</el-form-item>
<el-form-item label="整改完成情况" prop="isFinish" v-if="isEdit">
<!-- <el-input
v-model="form.isFinish"
placeholder="请输入整改完成情况"
/> -->
<el-select
v-model="form.isFinish"
placeholder="请选择整改完成情况"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in isFinishOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="附件" prop="attachment" v-if="isEdit">
<!-- <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) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-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 {
listZrdw,
getZrdw,
delZrdw,
addZrdw,
updateZrdw,
exportZrdw,
} from "@/api/warn/zrdw";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default {
name: "Zrdw",
props: ["inspectionId", "rectificationId", "proNo", "proCode", "isAdd"],
data() {
return {
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
zrdwList: [],
//
title: "",
//
open: false,
//
isFinishOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
isFinish: null,
attachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
rectificationSituation: [
{ max: 65500, message: "字符长度最大为65500", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isEdit: false,
};
},
created() {
if (!this.isAdd) this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
/** 查询责任单位列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
this.queryParams.data.rectificationId = this.rectificationId;
listZrdw(this.queryParams).then((response) => {
this.zrdwList = response.records;
this.total = response.total;
this.loading = false;
});
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
unitIdFormat(row) {
return this.unitOptions.find((item) => item.id == row.unitId)
?.enterpriseName;
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: 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.isEdit = false;
this.open = true;
this.title = "添加责任单位";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isEdit = true;
const id = row.id || this.ids;
getZrdw(id).then((response) => {
this.form = response.data;
if (this.form.attachment) {
this.fileList1 = JSON.parse(this.form.attachment);
}
this.open = true;
this.title = "修改责任单位";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.attachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateZrdw(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
this.form.rectificationId = this.rectificationId;
this.form.isFinish = "0";
addZrdw(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 delZrdw(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

544
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/performanceInspection/editPart.vue

@ -0,0 +1,544 @@
<template>
<div>
<div style="text-align: right; margin-bottom: 10px">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:rectification:add']"
>新增整改通知书</el-button
>
</div>
<el-table v-loading="loading" border :data="rectificationList">
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="发文单位"
align="center"
prop="issuingUnit"
min-width="120"
/>
<el-table-column
label="文号"
align="center"
prop="documentNumber"
min-width="120"
/>
<el-table-column
label="通知生效时间"
align="center"
prop="noticeBegainTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.noticeBegainTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="整改通知书"
align="center"
prop="rectificationAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.rectificationAttachment
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="责任单位"
align="center"
prop="unitArray"
:formatter="unitArrayFormat"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<!-- <el-table-column
label="整改相关附件"
align="center"
prop="ccc"
min-width="120"
/> -->
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['warn:rectification:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:rectification: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="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="发文单位" prop="issuingUnit">
<el-input v-model="form.issuingUnit" placeholder="请输入发文单位" />
</el-form-item>
<el-form-item label="文号" prop="documentNumber">
<el-input v-model="form.documentNumber" placeholder="请输入文号" />
</el-form-item>
<el-form-item label="通知生效时间" prop="noticeBegainTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.noticeBegainTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择通知生效时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="整改通知书" prop="rectificationAttachment">
<!-- <el-input v-model="form.rectificationAttachment" placeholder="请输入整改通知书" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-form>
<responsibleUnit
v-if="open && form.id"
:isAdd="isAdd"
:inspectionId="inspectionId"
:rectificationId="form.id"
:proNo="proNo"
:proCode="proCode"
/>
<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,
delRectification,
addRectification,
updateRectification,
exportRectification,
} from "@/api/warn/rectification";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import responsibleUnit from "./responsibleUnit.vue";
export default {
name: "Rectification",
props: ["inspectionId", "proNo", "proCode"],
components: {
responsibleUnit,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
rectificationList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
issuingUnit: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
documentNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isAdd: false,
};
},
created() {
this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
/** 查询整改通知书列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
listRectification(this.queryParams).then((response) => {
this.rectificationList = response.records;
console.log("this.rectificationList", this.rectificationList);
this.total = response.total;
this.loading = false;
});
},
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
unitArrayFormat(row) {
let res = "";
row.unitArray?.forEach((item) => {
// this.unitOptions.forEach((sub) => {
// if (item === sub.enterpriseName) {
res = res + item + "、";
// }
// });
});
return res;
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: 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.isAdd = true;
this.open = true;
this.title = "添加整改通知书";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isAdd = false;
const id = row.id || this.ids;
getRectification(id).then((response) => {
this.form = response.data;
if (this.form.rectificationAttachment) {
this.fileList1 = JSON.parse(this.form.rectificationAttachment);
}
this.open = true;
this.title = "修改整改通知书";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.rectificationAttachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateRectification(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
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("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

857
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/performanceInspection/index.vue

@ -0,0 +1,857 @@
<template>
<div class="app-container">
<!-- 面包屑 -->
<el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
v-for="(item, index) in routeList"
:key="item + index"
:to="{ path: item.path }"
>{{ item.routeName }}</el-breadcrumb-item
>
</el-breadcrumb>
<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 label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="queryParams.data.inspectionTypes"
placeholder="请选择监督检查类型"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item> -->
<el-form-item>
<!-- <el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
> -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:inspections: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="['warn:inspections: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="['warn:inspections:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="inspectionsList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="项目名称"
align="center"
prop="projectName"
min-width="120"
/>
<!-- <el-table-column
label="监督检查类型"
align="center"
prop="inspectionTypes"
:formatter="inspectionTypesFormat"
min-width="120"
/> -->
<el-table-column
label="检查时间"
align="center"
prop="inspectionTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.inspectionTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="检查人"
align="center"
prop="inspectionPerson"
min-width="120"
/>
<el-table-column
label="通知文件"
align="center"
prop="noticeAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.noticeAttachment)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.noticeAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="检查表"
align="center"
prop="checklist"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.checklist)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.checklist, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="整改报告"
align="center"
prop="rectificationReport"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.rectificationReport)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationReport, 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="['warn:inspections:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:inspections: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="1400px"
append-to-body
:close-on-click-modal="false"
>
<div class="listTitle" style="margin-top: 0">
<span>项目法人履职检查信息</span>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="项目名称" prop="projectName">
<el-select
v-model="form.projectName"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in projectNameOptions"
:key="dict.projectName + dict.id"
:label="dict.projectName + '[' + dict.proCode + ']'"
:value="dict.projectName + '[' + dict.proCode + ']'"
@click.native="getId(dict)"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="form.inspectionTypes"
placeholder="请选择监督检查类型"
style="width: 100%"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="检查时间" prop="inspectionTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.inspectionTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择检查时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="检查人" prop="inspectionPerson">
<el-input
v-model="form.inspectionPerson"
placeholder="请输入检查人"
/>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item label="检查通知" prop="noticeAttachment">
<!-- <el-input
v-model="form.noticeAttachment"
placeholder="请输入通知文件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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="8">
<el-form-item label="整改通知" prop="checklist">
<!-- <el-input v-model="form.checklist" placeholder="请输入检查表" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList2')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList2')
"
:file-list="fileList2"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="整改报告" prop="rectificationReport">
<!-- <el-input
v-model="form.rectificationReport"
placeholder="请输入整改报告"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList3')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
: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-row>
</el-form>
<div v-if="form.id">
<div class="listTitle" style="margin-top: 0">
<span>责令限期整改通知书列表</span>
</div>
<editPart
:inspectionId="form.id"
:proNo="form.proNo"
:proCode="form.proCode"
/>
</div>
<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 {
listInspections,
getInspections,
delInspections,
addInspections,
updateInspections,
exportInspections,
} from "@/api/warn/inspections";
import { listInfo, getInfo } from "@/api/build/projectInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import editPart from "./editPart.vue";
export default {
name: "Inspections",
components: {
editPart,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
inspectionsList: [],
//
title: "",
//
open: false,
//
inspectionTypesOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
othersParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
isMajor: null,
projectName: null,
unitLeader: null,
projectLegalPerson: null,
projectLegalUnit: null,
projectLegalPhone: null,
engineeringGrade: null,
engineeringPurposes: null,
workCategory: null,
constructionAddress: null,
constructionMode: null,
constructionNature: null,
constructionContent: null,
adcd: null,
basin: null,
projectType: null,
centralArrangedFunds: null,
centralArrangedFundsRate: null,
provincialFunding: null,
provincialFundingRate: null,
cityLevelFunds: null,
cityLevelFundsRate: null,
countyLevelFunds: null,
countyLevelFundsRate: null,
townshipInvestments: null,
townshipInvestmentsRate: null,
isMajorProject: null,
investmentSubject: null,
constructionPhase: null,
fundingNumber: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {
inspectionPerson: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectName: [
{
required: true,
message: "请选择项目",
trigger: "blur",
},
],
},
//
projectNameOptions: [],
proCode: "",
proNo: "",
//
routeList: [
{
path: "/evaluationEarlyWarning/supervisionInspection/regulatoryInspection",
routeName: "项目法人履职检查",
},
],
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
fileList2: [],
fileList3: [],
};
},
created() {
this.getList();
this.getDicts("supervisory_inspection_type").then((response) => {
this.inspectionTypesOptions = response.data;
});
listInfo(this.othersParams).then((response) => {
this.projectNameOptions = response.records;
});
},
methods: {
getId(res) {
// console.log(res)
getInfo(res.id).then((response) => {
console.log(response.data);
this.proNo = response.data.proNo;
this.proCode = response.data.proCode;
});
},
/** 查询监管检查列表 */
getList() {
this.loading = true;
this.queryParams.data.menuType = "0";
listInspections(this.queryParams).then((response) => {
this.inspectionsList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
inspectionTypesFormat(row, column) {
return this.selectDictLabel(
this.inspectionTypesOptions,
row.inspectionTypes
);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.form = {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "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;
getInspections(id).then((response) => {
this.form = response.data;
this.form.projectName =
this.form.projectName + "[" + this.form.proCode + "]";
if (this.form.noticeAttachment) {
this.fileList1 = JSON.parse(this.form.noticeAttachment);
}
if (this.form.checklist) {
this.fileList2 = JSON.parse(this.form.checklist);
}
if (this.form.rectificationReport) {
this.fileList3 = JSON.parse(this.form.rectificationReport);
}
this.open = true;
this.title = "修改项目法人履职检查";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.proNo) {
this.form.proNo = this.proNo;
}
if (this.proCode) {
this.form.proCode = this.proCode;
}
this.form.noticeAttachment = JSON.stringify(this.fileList1);
this.form.checklist = JSON.stringify(this.fileList2);
this.form.rectificationReport = JSON.stringify(this.fileList3);
if (this.form.id != null) {
updateInspections(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.menuType = "0";
addInspections(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 delInspections(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
::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>

582
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/performanceInspection/responsibleUnit.vue

@ -0,0 +1,582 @@
<template>
<div>
<!-- <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="['warn:zrdw: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="['warn:zrdw: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="['warn:zrdw:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['warn:zrdw:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> -->
<el-table v-loading="loading" :data="zrdwList" border>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="责任单位"
align="center"
prop="unitId"
:formatter="unitIdFormat"
min-width="120"
/>
<el-table-column
label="整改完成内容"
align="center"
prop="rectificationSituation"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<el-table-column
label="整改相关附件"
align="center"
prop="attachment"
min-width="120"
>
<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="downloadFile(scope.row.attachment, 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="['warn:zrdw:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:zrdw:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-button
type="text"
icon="el-icon-plus"
size="medium"
@click="handleAdd"
v-hasPermi="['warn:zrdw:add']"
>添加责任单位</el-button
>
<!-- <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="1000px"
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="责任单位" prop="unitId">
<!-- <el-input v-model="form.unitId" placeholder="请输入单位id" /> -->
<el-select
v-model="form.unitId"
placeholder="请选择责任单位"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in unitOptions"
:key="dict.id + dict.enterpriseName"
:label="dict.enterpriseName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="整改完成内容" prop="rectificationSituation">
<el-input
v-model="form.rectificationSituation"
placeholder="请输入整改完成内容"
type="textarea"
/>
<!-- <el-select
v-model="form.rectificationSituation"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in rectificationSituationOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> -->
</el-form-item>
<el-form-item label="整改完成情况" prop="isFinish" v-if="isEdit">
<!-- <el-input
v-model="form.isFinish"
placeholder="请输入整改完成情况"
/> -->
<el-select
v-model="form.isFinish"
placeholder="请选择整改完成情况"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in isFinishOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="附件" prop="attachment" v-if="isEdit">
<!-- <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) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-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 {
listZrdw,
getZrdw,
delZrdw,
addZrdw,
updateZrdw,
exportZrdw,
} from "@/api/warn/zrdw";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default {
name: "Zrdw",
props: ["inspectionId", "rectificationId", "proNo", "proCode", "isAdd"],
data() {
return {
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
zrdwList: [],
//
title: "",
//
open: false,
//
isFinishOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
isFinish: null,
attachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
rectificationSituation: [
{ max: 65500, message: "字符长度最大为65500", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isEdit: false,
};
},
created() {
if (!this.isAdd) this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
/** 查询责任单位列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
this.queryParams.data.rectificationId = this.rectificationId;
listZrdw(this.queryParams).then((response) => {
this.zrdwList = response.records;
this.total = response.total;
this.loading = false;
});
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
unitIdFormat(row) {
return this.unitOptions.find((item) => item.id == row.unitId)
?.enterpriseName;
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: 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.isEdit = false;
this.open = true;
this.title = "添加责任单位";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isEdit = true;
const id = row.id || this.ids;
getZrdw(id).then((response) => {
this.form = response.data;
if (this.form.attachment) {
this.fileList1 = JSON.parse(this.form.attachment);
}
this.open = true;
this.title = "修改责任单位";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.attachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateZrdw(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
this.form.rectificationId = this.rectificationId;
this.form.isFinish = "0";
addZrdw(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 delZrdw(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

544
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/qualityInspection/editPart.vue

@ -0,0 +1,544 @@
<template>
<div>
<div style="text-align: right; margin-bottom: 10px">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:rectification:add']"
>新增整改通知书</el-button
>
</div>
<el-table v-loading="loading" border :data="rectificationList">
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="发文单位"
align="center"
prop="issuingUnit"
min-width="120"
/>
<el-table-column
label="文号"
align="center"
prop="documentNumber"
min-width="120"
/>
<el-table-column
label="通知生效时间"
align="center"
prop="noticeBegainTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.noticeBegainTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="整改通知书"
align="center"
prop="rectificationAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.rectificationAttachment
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="责任单位"
align="center"
prop="unitArray"
:formatter="unitArrayFormat"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<!-- <el-table-column
label="整改相关附件"
align="center"
prop="ccc"
min-width="120"
/> -->
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['warn:rectification:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:rectification: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="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="发文单位" prop="issuingUnit">
<el-input v-model="form.issuingUnit" placeholder="请输入发文单位" />
</el-form-item>
<el-form-item label="文号" prop="documentNumber">
<el-input v-model="form.documentNumber" placeholder="请输入文号" />
</el-form-item>
<el-form-item label="通知生效时间" prop="noticeBegainTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.noticeBegainTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择通知生效时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="整改通知书" prop="rectificationAttachment">
<!-- <el-input v-model="form.rectificationAttachment" placeholder="请输入整改通知书" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-form>
<responsibleUnit
v-if="open && form.id"
:isAdd="isAdd"
:inspectionId="inspectionId"
:rectificationId="form.id"
:proNo="proNo"
:proCode="proCode"
/>
<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,
delRectification,
addRectification,
updateRectification,
exportRectification,
} from "@/api/warn/rectification";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import responsibleUnit from "./responsibleUnit.vue";
export default {
name: "Rectification",
props: ["inspectionId", "proNo", "proCode"],
components: {
responsibleUnit,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
rectificationList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
issuingUnit: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
documentNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isAdd: false,
};
},
created() {
this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
/** 查询整改通知书列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
listRectification(this.queryParams).then((response) => {
this.rectificationList = response.records;
console.log("this.rectificationList", this.rectificationList);
this.total = response.total;
this.loading = false;
});
},
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
unitArrayFormat(row) {
let res = "";
row.unitArray?.forEach((item) => {
// this.unitOptions.forEach((sub) => {
// if (item === sub.enterpriseName) {
res = res + item + "、";
// }
// });
});
return res;
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: 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.isAdd = true;
this.open = true;
this.title = "添加整改通知书";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isAdd = false;
const id = row.id || this.ids;
getRectification(id).then((response) => {
this.form = response.data;
if (this.form.rectificationAttachment) {
this.fileList1 = JSON.parse(this.form.rectificationAttachment);
}
this.open = true;
this.title = "修改整改通知书";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.rectificationAttachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateRectification(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
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("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

857
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/qualityInspection/index.vue

@ -0,0 +1,857 @@
<template>
<div class="app-container">
<!-- 面包屑 -->
<el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
v-for="(item, index) in routeList"
:key="item + index"
:to="{ path: item.path }"
>{{ item.routeName }}</el-breadcrumb-item
>
</el-breadcrumb>
<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 label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="queryParams.data.inspectionTypes"
placeholder="请选择监督检查类型"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item> -->
<el-form-item>
<!-- <el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
> -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:inspections: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="['warn:inspections: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="['warn:inspections:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="inspectionsList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="项目名称"
align="center"
prop="projectName"
min-width="120"
/>
<!-- <el-table-column
label="监督检查类型"
align="center"
prop="inspectionTypes"
:formatter="inspectionTypesFormat"
min-width="120"
/> -->
<el-table-column
label="检查时间"
align="center"
prop="inspectionTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.inspectionTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="检查人"
align="center"
prop="inspectionPerson"
min-width="120"
/>
<el-table-column
label="通知文件"
align="center"
prop="noticeAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.noticeAttachment)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.noticeAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="检查表"
align="center"
prop="checklist"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.checklist)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.checklist, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="整改报告"
align="center"
prop="rectificationReport"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.rectificationReport)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationReport, 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="['warn:inspections:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:inspections: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="1400px"
append-to-body
:close-on-click-modal="false"
>
<div class="listTitle" style="margin-top: 0">
<span>质量检查信息</span>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="项目名称" prop="projectName">
<el-select
v-model="form.projectName"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in projectNameOptions"
:key="dict.projectName + dict.id"
:label="dict.projectName + '[' + dict.proCode + ']'"
:value="dict.projectName + '[' + dict.proCode + ']'"
@click.native="getId(dict)"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="form.inspectionTypes"
placeholder="请选择监督检查类型"
style="width: 100%"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="检查时间" prop="inspectionTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.inspectionTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择检查时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="检查人" prop="inspectionPerson">
<el-input
v-model="form.inspectionPerson"
placeholder="请输入检查人"
/>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item label="检查通知" prop="noticeAttachment">
<!-- <el-input
v-model="form.noticeAttachment"
placeholder="请输入通知文件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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="8">
<el-form-item label="整改通知" prop="checklist">
<!-- <el-input v-model="form.checklist" placeholder="请输入检查表" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList2')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList2')
"
:file-list="fileList2"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="整改报告" prop="rectificationReport">
<!-- <el-input
v-model="form.rectificationReport"
placeholder="请输入整改报告"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList3')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
: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-row>
</el-form>
<div v-if="form.id">
<div class="listTitle" style="margin-top: 0">
<span>责令限期整改通知书列表</span>
</div>
<editPart
:inspectionId="form.id"
:proNo="form.proNo"
:proCode="form.proCode"
/>
</div>
<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 {
listInspections,
getInspections,
delInspections,
addInspections,
updateInspections,
exportInspections,
} from "@/api/warn/inspections";
import { listInfo, getInfo } from "@/api/build/projectInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import editPart from "./editPart.vue";
export default {
name: "Inspections",
components: {
editPart,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
inspectionsList: [],
//
title: "",
//
open: false,
//
inspectionTypesOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
othersParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
isMajor: null,
projectName: null,
unitLeader: null,
projectLegalPerson: null,
projectLegalUnit: null,
projectLegalPhone: null,
engineeringGrade: null,
engineeringPurposes: null,
workCategory: null,
constructionAddress: null,
constructionMode: null,
constructionNature: null,
constructionContent: null,
adcd: null,
basin: null,
projectType: null,
centralArrangedFunds: null,
centralArrangedFundsRate: null,
provincialFunding: null,
provincialFundingRate: null,
cityLevelFunds: null,
cityLevelFundsRate: null,
countyLevelFunds: null,
countyLevelFundsRate: null,
townshipInvestments: null,
townshipInvestmentsRate: null,
isMajorProject: null,
investmentSubject: null,
constructionPhase: null,
fundingNumber: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {
inspectionPerson: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectName: [
{
required: true,
message: "请选择项目",
trigger: "blur",
},
],
},
//
projectNameOptions: [],
proCode: "",
proNo: "",
//
routeList: [
{
path: "/evaluationEarlyWarning/supervisionInspection/regulatoryInspection",
routeName: "质量检查",
},
],
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
fileList2: [],
fileList3: [],
};
},
created() {
this.getList();
this.getDicts("supervisory_inspection_type").then((response) => {
this.inspectionTypesOptions = response.data;
});
listInfo(this.othersParams).then((response) => {
this.projectNameOptions = response.records;
});
},
methods: {
getId(res) {
// console.log(res)
getInfo(res.id).then((response) => {
console.log(response.data);
this.proNo = response.data.proNo;
this.proCode = response.data.proCode;
});
},
/** 查询监管检查列表 */
getList() {
this.loading = true;
this.queryParams.data.menuType = "1";
listInspections(this.queryParams).then((response) => {
this.inspectionsList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
inspectionTypesFormat(row, column) {
return this.selectDictLabel(
this.inspectionTypesOptions,
row.inspectionTypes
);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.form = {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "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;
getInspections(id).then((response) => {
this.form = response.data;
this.form.projectName =
this.form.projectName + "[" + this.form.proCode + "]";
if (this.form.noticeAttachment) {
this.fileList1 = JSON.parse(this.form.noticeAttachment);
}
if (this.form.checklist) {
this.fileList2 = JSON.parse(this.form.checklist);
}
if (this.form.rectificationReport) {
this.fileList3 = JSON.parse(this.form.rectificationReport);
}
this.open = true;
this.title = "修改质量检查";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.proNo) {
this.form.proNo = this.proNo;
}
if (this.proCode) {
this.form.proCode = this.proCode;
}
this.form.noticeAttachment = JSON.stringify(this.fileList1);
this.form.checklist = JSON.stringify(this.fileList2);
this.form.rectificationReport = JSON.stringify(this.fileList3);
if (this.form.id != null) {
updateInspections(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.menuType = "1";
addInspections(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 delInspections(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
::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>

582
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/qualityInspection/responsibleUnit.vue

@ -0,0 +1,582 @@
<template>
<div>
<!-- <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="['warn:zrdw: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="['warn:zrdw: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="['warn:zrdw:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['warn:zrdw:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> -->
<el-table v-loading="loading" :data="zrdwList" border>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="责任单位"
align="center"
prop="unitId"
:formatter="unitIdFormat"
min-width="120"
/>
<el-table-column
label="整改完成内容"
align="center"
prop="rectificationSituation"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<el-table-column
label="整改相关附件"
align="center"
prop="attachment"
min-width="120"
>
<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="downloadFile(scope.row.attachment, 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="['warn:zrdw:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:zrdw:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-button
type="text"
icon="el-icon-plus"
size="medium"
@click="handleAdd"
v-hasPermi="['warn:zrdw:add']"
>添加责任单位</el-button
>
<!-- <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="1000px"
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="责任单位" prop="unitId">
<!-- <el-input v-model="form.unitId" placeholder="请输入单位id" /> -->
<el-select
v-model="form.unitId"
placeholder="请选择责任单位"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in unitOptions"
:key="dict.id + dict.enterpriseName"
:label="dict.enterpriseName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="整改完成内容" prop="rectificationSituation">
<el-input
v-model="form.rectificationSituation"
placeholder="请输入整改完成内容"
type="textarea"
/>
<!-- <el-select
v-model="form.rectificationSituation"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in rectificationSituationOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> -->
</el-form-item>
<el-form-item label="整改完成情况" prop="isFinish" v-if="isEdit">
<!-- <el-input
v-model="form.isFinish"
placeholder="请输入整改完成情况"
/> -->
<el-select
v-model="form.isFinish"
placeholder="请选择整改完成情况"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in isFinishOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="附件" prop="attachment" v-if="isEdit">
<!-- <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) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-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 {
listZrdw,
getZrdw,
delZrdw,
addZrdw,
updateZrdw,
exportZrdw,
} from "@/api/warn/zrdw";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default {
name: "Zrdw",
props: ["inspectionId", "rectificationId", "proNo", "proCode", "isAdd"],
data() {
return {
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
zrdwList: [],
//
title: "",
//
open: false,
//
isFinishOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
isFinish: null,
attachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
rectificationSituation: [
{ max: 65500, message: "字符长度最大为65500", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isEdit: false,
};
},
created() {
if (!this.isAdd) this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
/** 查询责任单位列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
this.queryParams.data.rectificationId = this.rectificationId;
listZrdw(this.queryParams).then((response) => {
this.zrdwList = response.records;
this.total = response.total;
this.loading = false;
});
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
unitIdFormat(row) {
return this.unitOptions.find((item) => item.id == row.unitId)
?.enterpriseName;
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: 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.isEdit = false;
this.open = true;
this.title = "添加责任单位";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isEdit = true;
const id = row.id || this.ids;
getZrdw(id).then((response) => {
this.form = response.data;
if (this.form.attachment) {
this.fileList1 = JSON.parse(this.form.attachment);
}
this.open = true;
this.title = "修改责任单位";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.attachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateZrdw(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
this.form.rectificationId = this.rectificationId;
this.form.isFinish = "0";
addZrdw(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 delZrdw(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

544
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/specialInspection/editPart.vue

@ -0,0 +1,544 @@
<template>
<div>
<div style="text-align: right; margin-bottom: 10px">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:rectification:add']"
>新增整改通知书</el-button
>
</div>
<el-table v-loading="loading" border :data="rectificationList">
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="发文单位"
align="center"
prop="issuingUnit"
min-width="120"
/>
<el-table-column
label="文号"
align="center"
prop="documentNumber"
min-width="120"
/>
<el-table-column
label="通知生效时间"
align="center"
prop="noticeBegainTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.noticeBegainTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="整改通知书"
align="center"
prop="rectificationAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(
scope.row.rectificationAttachment
)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="责任单位"
align="center"
prop="unitArray"
:formatter="unitArrayFormat"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<!-- <el-table-column
label="整改相关附件"
align="center"
prop="ccc"
min-width="120"
/> -->
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
width="180"
fixed="right"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['warn:rectification:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:rectification: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="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="发文单位" prop="issuingUnit">
<el-input v-model="form.issuingUnit" placeholder="请输入发文单位" />
</el-form-item>
<el-form-item label="文号" prop="documentNumber">
<el-input v-model="form.documentNumber" placeholder="请输入文号" />
</el-form-item>
<el-form-item label="通知生效时间" prop="noticeBegainTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.noticeBegainTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择通知生效时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="整改通知书" prop="rectificationAttachment">
<!-- <el-input v-model="form.rectificationAttachment" placeholder="请输入整改通知书" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-form>
<responsibleUnit
v-if="open && form.id"
:isAdd="isAdd"
:inspectionId="inspectionId"
:rectificationId="form.id"
:proNo="proNo"
:proCode="proCode"
/>
<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,
delRectification,
addRectification,
updateRectification,
exportRectification,
} from "@/api/warn/rectification";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import responsibleUnit from "./responsibleUnit.vue";
export default {
name: "Rectification",
props: ["inspectionId", "proNo", "proCode"],
components: {
responsibleUnit,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
rectificationList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
issuingUnit: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
documentNumber: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isAdd: false,
};
},
created() {
this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
/** 查询整改通知书列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
listRectification(this.queryParams).then((response) => {
this.rectificationList = response.records;
console.log("this.rectificationList", this.rectificationList);
this.total = response.total;
this.loading = false;
});
},
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
unitArrayFormat(row) {
let res = "";
row.unitArray?.forEach((item) => {
// this.unitOptions.forEach((sub) => {
// if (item === sub.enterpriseName) {
res = res + item + "、";
// }
// });
});
return res;
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
issuingUnit: null,
documentNumber: null,
noticeBegainTime: null,
rectificationAttachment: null,
createTime: null,
createUid: null,
updateUid: null,
updateTime: null,
owerDept: null,
remark: 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.isAdd = true;
this.open = true;
this.title = "添加整改通知书";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isAdd = false;
const id = row.id || this.ids;
getRectification(id).then((response) => {
this.form = response.data;
if (this.form.rectificationAttachment) {
this.fileList1 = JSON.parse(this.form.rectificationAttachment);
}
this.open = true;
this.title = "修改整改通知书";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.rectificationAttachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateRectification(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
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("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

857
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/specialInspection/index.vue

@ -0,0 +1,857 @@
<template>
<div class="app-container">
<!-- 面包屑 -->
<el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
v-for="(item, index) in routeList"
:key="item + index"
:to="{ path: item.path }"
>{{ item.routeName }}</el-breadcrumb-item
>
</el-breadcrumb>
<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 label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="queryParams.data.inspectionTypes"
placeholder="请选择监督检查类型"
clearable
size="small"
@change="handleQuery"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item> -->
<el-form-item>
<!-- <el-button
type="cyan"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
> -->
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['warn:inspections: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="['warn:inspections: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="['warn:inspections:remove']"
>删除</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="inspectionsList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column
label="序号"
type="index"
width="50"
align="center"
fixed
/>
<el-table-column
label="项目名称"
align="center"
prop="projectName"
min-width="120"
/>
<!-- <el-table-column
label="监督检查类型"
align="center"
prop="inspectionTypes"
:formatter="inspectionTypesFormat"
min-width="120"
/> -->
<el-table-column
label="检查时间"
align="center"
prop="inspectionTime"
min-width="120"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.inspectionTime, "{y}-{m}-{d}") }}</span>
</template>
</el-table-column>
<el-table-column
label="检查人"
align="center"
prop="inspectionPerson"
min-width="120"
/>
<el-table-column
label="通知文件"
align="center"
prop="noticeAttachment"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.noticeAttachment)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.noticeAttachment, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="检查表"
align="center"
prop="checklist"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.checklist)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.checklist, index)"
style="cursor: pointer"
></i>
</div>
</template>
</el-table-column>
<el-table-column
label="整改报告"
align="center"
prop="rectificationReport"
min-width="120"
>
<template slot-scope="scope">
<div
v-for="(item, index) in JSON.parse(scope.row.rectificationReport)"
:key="item + index"
>
<i class="el-icon-document"></i>
{{ item.name }}
<i
class="el-icon-download"
@click="downloadFile(scope.row.rectificationReport, 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="['warn:inspections:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:inspections: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="1400px"
append-to-body
:close-on-click-modal="false"
>
<div class="listTitle" style="margin-top: 0">
<span>市场监管专项检查信息</span>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="项目名称" prop="projectName">
<el-select
v-model="form.projectName"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in projectNameOptions"
:key="dict.projectName + dict.id"
:label="dict.projectName + '[' + dict.proCode + ']'"
:value="dict.projectName + '[' + dict.proCode + ']'"
@click.native="getId(dict)"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="监督检查类型" prop="inspectionTypes">
<el-select
v-model="form.inspectionTypes"
placeholder="请选择监督检查类型"
style="width: 100%"
>
<el-option
v-for="dict in inspectionTypesOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
></el-option>
</el-select>
</el-form-item> -->
<el-form-item label="检查时间" prop="inspectionTime">
<el-date-picker
clearable
size="small"
style="width: 100%"
v-model="form.inspectionTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择检查时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="检查人" prop="inspectionPerson">
<el-input
v-model="form.inspectionPerson"
placeholder="请输入检查人"
/>
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item label="检查通知" prop="noticeAttachment">
<!-- <el-input
v-model="form.noticeAttachment"
placeholder="请输入通知文件"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList1')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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="8">
<el-form-item label="整改通知" prop="checklist">
<!-- <el-input v-model="form.checklist" placeholder="请输入检查表" /> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList2')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList2')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(fileList, 'fileList2')
"
:file-list="fileList2"
>
<el-button size="small" type="primary" plain>
<i class="el-icon-upload el-icon--right"></i>
点击上传
</el-button>
<div slot="tip" class="el-upload__tip">
支持jpg/png/pdf/word/excel文件等不超过200M
</div>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="整改报告" prop="rectificationReport">
<!-- <el-input
v-model="form.rectificationReport"
placeholder="请输入整改报告"
/> -->
<el-upload
class="upload-demo"
action="thinking/common/upload"
:headers="headers"
:before-upload="(file) => $fileBeforeUpload(file, 'fileList3')"
:on-preview="handlePreview"
:on-remove="(file) => handleOpinionRemove(file, 'fileList3')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
: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-row>
</el-form>
<div v-if="form.id">
<div class="listTitle" style="margin-top: 0">
<span>责令限期整改通知书列表</span>
</div>
<editPart
:inspectionId="form.id"
:proNo="form.proNo"
:proCode="form.proCode"
/>
</div>
<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 {
listInspections,
getInspections,
delInspections,
addInspections,
updateInspections,
exportInspections,
} from "@/api/warn/inspections";
import { listInfo, getInfo } from "@/api/build/projectInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import editPart from "./editPart.vue";
export default {
name: "Inspections",
components: {
editPart,
},
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
inspectionsList: [],
//
title: "",
//
open: false,
//
inspectionTypesOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
othersParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
isMajor: null,
projectName: null,
unitLeader: null,
projectLegalPerson: null,
projectLegalUnit: null,
projectLegalPhone: null,
engineeringGrade: null,
engineeringPurposes: null,
workCategory: null,
constructionAddress: null,
constructionMode: null,
constructionNature: null,
constructionContent: null,
adcd: null,
basin: null,
projectType: null,
centralArrangedFunds: null,
centralArrangedFundsRate: null,
provincialFunding: null,
provincialFundingRate: null,
cityLevelFunds: null,
cityLevelFundsRate: null,
countyLevelFunds: null,
countyLevelFundsRate: null,
townshipInvestments: null,
townshipInvestmentsRate: null,
isMajorProject: null,
investmentSubject: null,
constructionPhase: null,
fundingNumber: null,
proCode: null,
proNo: null,
createUid: null,
createTime: null,
updateUid: null,
updateTime: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
form: {},
//
rules: {
inspectionPerson: [
{ max: 250, message: "字符长度最大为250", trigger: "blur" },
],
projectName: [
{
required: true,
message: "请选择项目",
trigger: "blur",
},
],
},
//
projectNameOptions: [],
proCode: "",
proNo: "",
//
routeList: [
{
path: "/evaluationEarlyWarning/supervisionInspection/regulatoryInspection",
routeName: "市场监管专项检查",
},
],
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
fileList2: [],
fileList3: [],
};
},
created() {
this.getList();
this.getDicts("supervisory_inspection_type").then((response) => {
this.inspectionTypesOptions = response.data;
});
listInfo(this.othersParams).then((response) => {
this.projectNameOptions = response.records;
});
},
methods: {
getId(res) {
// console.log(res)
getInfo(res.id).then((response) => {
console.log(response.data);
this.proNo = response.data.proNo;
this.proCode = response.data.proCode;
});
},
/** 查询监管检查列表 */
getList() {
this.loading = true;
this.queryParams.data.menuType = "2";
listInspections(this.queryParams).then((response) => {
this.inspectionsList = response.records;
this.total = response.total;
this.loading = false;
});
},
//
inspectionTypesFormat(row, column) {
return this.selectDictLabel(
this.inspectionTypesOptions,
row.inspectionTypes
);
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.fileList2 = [];
this.fileList3 = [];
this.form = {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
menuType: null,
inspectionTypes: null,
inspectionTime: null,
inspectionPerson: null,
noticeAttachment: null,
checklist: null,
rectificationReport: null,
createTime: null,
updateTime: null,
remark: null,
createUid: null,
updateUid: null,
owerDept: null,
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "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;
getInspections(id).then((response) => {
this.form = response.data;
this.form.projectName =
this.form.projectName + "[" + this.form.proCode + "]";
if (this.form.noticeAttachment) {
this.fileList1 = JSON.parse(this.form.noticeAttachment);
}
if (this.form.checklist) {
this.fileList2 = JSON.parse(this.form.checklist);
}
if (this.form.rectificationReport) {
this.fileList3 = JSON.parse(this.form.rectificationReport);
}
this.open = true;
this.title = "修改市场监管专项检查";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.proNo) {
this.form.proNo = this.proNo;
}
if (this.proCode) {
this.form.proCode = this.proCode;
}
this.form.noticeAttachment = JSON.stringify(this.fileList1);
this.form.checklist = JSON.stringify(this.fileList2);
this.form.rectificationReport = JSON.stringify(this.fileList3);
if (this.form.id != null) {
updateInspections(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.menuType = "2";
addInspections(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 delInspections(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
::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>

582
jwtech-admin-page/src/views/evaluationEarlyWarning/supervisionInspection/specialInspection/responsibleUnit.vue

@ -0,0 +1,582 @@
<template>
<div>
<!-- <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="['warn:zrdw: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="['warn:zrdw: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="['warn:zrdw:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['warn:zrdw:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> -->
<el-table v-loading="loading" :data="zrdwList" border>
<!-- <el-table-column
label="监管id"
align="center"
prop="inspectionId"
min-width="120"
/> -->
<el-table-column
label="责任单位"
align="center"
prop="unitId"
:formatter="unitIdFormat"
min-width="120"
/>
<el-table-column
label="整改完成内容"
align="center"
prop="rectificationSituation"
min-width="120"
/>
<el-table-column
label="整改完成情况"
align="center"
prop="isFinish"
:formatter="isFinishFormat"
min-width="120"
/>
<el-table-column
label="整改相关附件"
align="center"
prop="attachment"
min-width="120"
>
<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="downloadFile(scope.row.attachment, 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="['warn:zrdw:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['warn:zrdw:remove']"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<el-button
type="text"
icon="el-icon-plus"
size="medium"
@click="handleAdd"
v-hasPermi="['warn:zrdw:add']"
>添加责任单位</el-button
>
<!-- <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="1000px"
append-to-body
:close-on-click-modal="false"
>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<!-- <el-form-item label="监管id" prop="inspectionId">
<el-input v-model="form.inspectionId" placeholder="请输入监管id" />
</el-form-item> -->
<el-form-item label="责任单位" prop="unitId">
<!-- <el-input v-model="form.unitId" placeholder="请输入单位id" /> -->
<el-select
v-model="form.unitId"
placeholder="请选择责任单位"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in unitOptions"
:key="dict.id + dict.enterpriseName"
:label="dict.enterpriseName"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="整改完成内容" prop="rectificationSituation">
<el-input
v-model="form.rectificationSituation"
placeholder="请输入整改完成内容"
type="textarea"
/>
<!-- <el-select
v-model="form.rectificationSituation"
placeholder="请输入项目名称"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in rectificationSituationOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select> -->
</el-form-item>
<el-form-item label="整改完成情况" prop="isFinish" v-if="isEdit">
<!-- <el-input
v-model="form.isFinish"
placeholder="请输入整改完成情况"
/> -->
<el-select
v-model="form.isFinish"
placeholder="请选择整改完成情况"
filterable
clearable
size="small"
style="width: 100%"
>
<el-option
v-for="dict in isFinishOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="附件" prop="attachment" v-if="isEdit">
<!-- <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) => handleOpinionRemove(file, 'fileList1')"
:before-remove="beforeRemove"
multiple
:on-exceed="handleExceed"
:on-success="
(_, fileList) => submitOpinionUpload(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-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 {
listZrdw,
getZrdw,
delZrdw,
addZrdw,
updateZrdw,
exportZrdw,
} from "@/api/warn/zrdw";
import { listInfo } from "@/api/build/enteInfo";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
export default {
name: "Zrdw",
props: ["inspectionId", "rectificationId", "proNo", "proCode", "isAdd"],
data() {
return {
//
loading: false,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
zrdwList: [],
//
title: "",
//
open: false,
//
isFinishOptions: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
isFinish: null,
attachment: null,
createUid: null,
updateUid: null,
owerDept: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
//
unitParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
proCode: null,
proNo: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sort: "desc",
},
},
unitOptions: [],
//
form: {},
//
rules: {
rectificationSituation: [
{ max: 65500, message: "字符长度最大为65500", trigger: "blur" },
],
},
//
headers: {
jianwei: "jwtech " + getToken(),
},
fileList1: [],
isEdit: false,
};
},
created() {
if (!this.isAdd) this.getList();
this.getUnit();
this.getDicts("rectification_completion").then((response) => {
this.isFinishOptions = response.data;
});
},
methods: {
getUnit() {
this.unitParams.data.proNo = this.proNo;
this.unitParams.data.proCode = this.proCode;
listInfo(this.unitParams).then((response) => {
this.unitOptions = response.data.enterpriseInfoList;
// console.log(88888888888, this.unitOptions);
});
},
/** 查询责任单位列表 */
getList() {
this.loading = true;
this.queryParams.data.inspectionId = this.inspectionId;
this.queryParams.data.rectificationId = this.rectificationId;
listZrdw(this.queryParams).then((response) => {
this.zrdwList = response.records;
this.total = response.total;
this.loading = false;
});
},
isFinishFormat(row) {
return this.selectDictLabel(this.isFinishOptions, row.isFinish);
},
unitIdFormat(row) {
return this.unitOptions.find((item) => item.id == row.unitId)
?.enterpriseName;
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.fileList1 = [];
this.form = {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: null,
};
this.resetForm("form");
},
//
resetQueryForm() {
this.queryParams = {
pageNum: 1,
pageSize: 10,
data: {
id: null,
inspectionId: null,
rectificationId: null,
unitId: null,
rectificationSituation: null,
attachment: null,
createUid: null,
updateUid: null,
createTime: null,
updateTime: null,
owerDept: null,
remark: 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.isEdit = false;
this.open = true;
this.title = "添加责任单位";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
this.isEdit = true;
const id = row.id || this.ids;
getZrdw(id).then((response) => {
this.form = response.data;
if (this.form.attachment) {
this.fileList1 = JSON.parse(this.form.attachment);
}
this.open = true;
this.title = "修改责任单位";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
this.form.attachment = JSON.stringify(this.fileList1);
if (this.form.id != null) {
updateZrdw(this.form).then((response) => {
if (response.code === 200) {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
}
});
} else {
this.form.inspectionId = this.inspectionId;
this.form.rectificationId = this.rectificationId;
this.form.isFinish = "0";
addZrdw(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 delZrdw(ids);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
//
submitOpinionUpload(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]);
},
handleOpinionRemove(file, name) {
// console.log(file, fileList1);
let index = this[name].findIndex((item) => item.uid === file.uid);
//
this[name].splice(index, 1);
},
//
downloadFile(fileList, index) {
console.log(fileList);
let file = JSON.parse(fileList)[index];
this.handlePreview(file);
},
//
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";
//::v-deep {
// .el-dialog {
// margin-top: 10vh !important;
// }
//}
</style>

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

@ -12,7 +12,7 @@
label-width="80px"
label-position="top"
>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="企业名称" prop="enterpriseName">
<el-input
v-model="form.enterpriseName"
@ -33,7 +33,7 @@
<!-- />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-col :span="12">
<el-form-item label="企业所属区划" prop="adcd">
<el-cascader
:options="areasOptions"

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

@ -24,7 +24,7 @@
>
<el-tab-pane
v-if="checkPermi(['market:qyjcqk:index'])"
label="企业基础情况"
label="企业基础信息"
name="basePage"
:lazy="true"
>

1109
jwtech-admin-page/src/views/project/bid/options/investmentMargin.vue

File diff suppressed because it is too large

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

@ -589,12 +589,11 @@
<el-descriptions-item>
<template slot="label"> 项目名称 </template>
<!-- {{ this.viewTitle }} -->
{{
this.reportMsg.projectName +
"[" +
this.reportMsg.projectCode +
"]"
}}
{{ this.reportMsg.projectName }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 项目编码 </template>
{{ this.reportMsg.projectCode }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"> 行政区划 </template>

2
jwtech-admin-page/src/views/project/special/options/basePage.vue

@ -21,7 +21,7 @@
<el-form-item label="规划类型" prop="projectType">
<el-select
v-model="baseMsg.projectType"
placeholder="请选择活动区域"
placeholder="请选择规划类型"
style="width: 100%"
clearable
>

Loading…
Cancel
Save