重点工程

pull/1/head
zhangqihang 2024-02-03 17:56:17 +08:00
parent f0a6339a7d
commit baca47e4cf
20 changed files with 414 additions and 316 deletions

View File

@ -861,7 +861,21 @@ export default [
title: "查看详情",
activeMenu: "/keyprojects/inspection",
},
component: "keyprojects/inspection/record_view",
component: "children",
children: [
{
path: "",
component: "keyprojects/inspection/record_view",
},
{
path: "/keyprojects/inspection/hidden_view",
meta: {
title: "隐患信息",
activeMenu: "/keyprojects/inspection",
},
component: "keyprojects/inspection/hidden_view",
},
],
},
],
},
@ -933,16 +947,6 @@ export default [
},
],
},
{
path: "/keyprojects/aiwarning",
meta: { title: "AI报警", isSubMenu: false },
component: "keyprojects/aiwarning/index",
},
{
path: "/keyprojects/videomanager",
meta: { title: "视频监控", isSubMenu: false },
component: "keyprojects/videomanager/index",
},
],
},
{

View File

@ -36,6 +36,8 @@ export const setOutsourcedGoEdit = (params) =>
post("/outsourced/goEdit", params); // 重点工程修改获取
export const setOutsourcedDelete = (params) =>
post("/outsourced/delete", params); // 重点工程修改获取
export const getOutsourcedJie = (params) => post("/outsourced/jie", params); // 结束工程
export const getOutsourcedStart = (params) => post("/outsourced/start", params); // 结束工程
export const getKeyprojectcheckList = (params) =>
post("/keyprojectcheck/list", params); // 安全环保检查列表
@ -49,3 +51,5 @@ export const getKeyprojectpunishList = (params) =>
post("/keyprojectpunish/list", params); // 处罚列表
export const getKeyprojectpunishGoEdit = (params) =>
post("/keyprojectpunish/goEdit", params); // 处罚列表详情
export const getCorpinfoListAll = (params) => post("/corpinfo/listAll", params); // 监理单位名称

View File

@ -1,106 +0,0 @@
<template>
<div>
<el-card>
<el-form
:model="searchForm"
label-width="100px"
@submit.prevent="fnResetPagination"
>
<el-row>
<el-col :span="4">
<el-form-item label="关键字搜索" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<el-button type="primary" native-type="submit">搜索</el-button>
<el-button native-type="reset" @click="fnResetPaginationTransfer">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<layout-card>
<layout-table
ref="tableRef"
:data="list"
@get-data="fnGetData"
v-model:pagination="pagination"
row-key="UNITS_ID"
>
<el-table-column reserve-selection type="selection" width="55" />
<el-table-column label="序号" width="60">
<template #default="{ $index }">
{{ serialNumber(pagination, $index) }}
</template>
</el-table-column>
<el-table-column prop="CREATOR_CORP_NAME" label="添加单位" />
<el-table-column prop="CREATOR_NAME" label="添加人" width="200" />
<el-table-column prop="UNITS_NAME" label="单位名称" width="150" />
<el-table-column prop="JOBTYPE" label="作业类别" width="100" />
<el-table-column prop="OPERATIONITEM" label="操作项目" />
<el-table-column prop="NAME" label="姓名" />
<el-table-column prop="SEX" label="性别" />
<el-table-column prop="CERTIFICATE_NUM" label="作业证书编号" />
<el-table-column prop="REVIEWTIME" label="复审时间" />
<el-table-column label="操作" align="center" width="120">
<template v-slot="{ row }">
<el-button
type="primary"
text
link
@click="fnView(row.PERSONNELMANAGEMENT_ID)"
>
查看
</el-button>
</template>
</el-table-column>
</layout-table>
</layout-card>
</div>
</template>
<script setup>
import useListData from "@/assets/js/useListData";
import { serialNumber } from "@/assets/js/utils";
import {
getPersonnelmanagementList,
setPersonnelmanagementGoEdit,
} from "@/request/keyprojects.js";
import { reactive } from "vue";
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
useListData(getPersonnelmanagementList);
const data = reactive({
type: "",
title: "",
editDialog: {
visible: false,
form: {},
},
});
const fnGoEdit = async (id) => {
const resData = await setPersonnelmanagementGoEdit({
PERSONNELMANAGEMENT_ID: id,
});
data.editDialog.form = resData.pd;
};
const fnResetPaginationTransfer = () => {
fnGetData(searchForm);
};
const fnView = async (id) => {
data.editDialog.form = {};
data.editDialog.visible = true;
data.editDialog.type = "view";
data.editDialog.title = "查看";
fnGoEdit(id);
};
</script>
<style scoped></style>

View File

@ -38,7 +38,14 @@
</template>
</el-table-column>
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
<el-table-column prop="DEPARTMENT_NAME" label="监管部门" width="250" />
<el-table-column prop="DEPARTMENT_NAME" label="监管部门">
<template v-slot="{ row }">
<span v-if="row.Q_DEPARTMENT_NAME">
{{ row.Q_DEPARTMENT_NAME }}
</span>
<span v-else>{{ row.DEPARTMENT_NAME }}</span>
</template>
</el-table-column>
<el-table-column
prop="MANAGE_CORPS_NAME"
label="监理单位"

View File

@ -54,10 +54,10 @@
</el-table-column>
<el-table-column label="隐患来源" width="200">
<template v-slot="{ row }">
<span v-if="row.SOURCE === 1">AI</span>
<span v-if="row.SOURCE === 2">AI</span>
<span v-if="row.SOURCE === 3">()</span>
<span v-if="row.SOURCE === 4">()</span>
<span v-if="row.SOURCE === '1'">AI</span>
<span v-if="row.SOURCE === '2'">AI</span>
<span v-if="row.SOURCE === '3'">()</span>
<span v-if="row.SOURCE === '5'">()</span>
</template>
</el-table-column>
<el-table-column label="隐患发现人" width="150">
@ -72,9 +72,9 @@
<el-table-column prop="CHECKTIME" label="验收时间" width="100" />
<el-table-column label="隐患状态" width="100">
<template v-slot="{ row }">
<span v-if="row.SOURCE === 1"></span>
<span v-if="row.SOURCE === 2"></span>
<span v-if="row.SOURCE === 4"></span>
<span v-if="row.STATE === '1'"></span>
<span v-if="row.STATE === '2'"></span>
<span v-if="row.STATE === '4'"></span>
</template>
</el-table-column>
<el-table-column label="是否处罚" width="100">

View File

@ -5,7 +5,15 @@
<el-divider content-position="left">检查信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="隐患照片 ">
{{ data.info.INSPECTION_CATEGORY }}
<img
v-viewer
v-for="item in data.hiddenImgs"
:key="item.FILEPATH"
:src="item.url"
width="100"
height="100"
class="ml"
/>
</el-descriptions-item>
<el-descriptions-item label="隐患描述">
{{ data.info.HIDDENDESCR }}
@ -32,16 +40,32 @@
{{ data.info.RECTIFICATIONTIME }}
</el-descriptions-item>
<el-descriptions-item label="整改照片">
{{ data.info.RECTIFICATIONTIME }}
<img
v-viewer
v-for="item in data.zgImgs"
:key="item.FILEPATH"
:src="item.url"
width="100"
height="100"
class="ml"
/>
</el-descriptions-item>
<el-descriptions-item label="验收时间">
{{ data.info.CHECKTIME }}
</el-descriptions-item>
<el-descriptions-item label="验收图片">
{{ data.info.CHECKTIME }}
<img
v-viewer
v-for="item in data.ysImgs"
:key="item.FILEPATH"
:src="item.url"
width="100"
height="100"
class="ml"
/>
</el-descriptions-item>
<el-descriptions-item label="是否进行罚款">
{{ pd.ISPUNISH === "1" ? "是" : "否" }}
{{ data.info.ISPUNISH === "1" ? "是" : "否" }}
</el-descriptions-item>
</el-descriptions>
</div>
@ -50,6 +74,7 @@
</template>
<script setup>
import { addingPrefixToFile } from "@/assets/js/utils";
import { getKeyprojectcheckFindHidden } from "@/request/keyprojects";
import { reactive } from "vue";
import { useRoute } from "vue-router";
@ -57,6 +82,9 @@ import { useRoute } from "vue-router";
const route = useRoute();
const data = reactive({
info: {},
hiddenImgs: [],
ysImgs: [],
zgImgs: [],
});
const fnGetData = async () => {
@ -64,6 +92,10 @@ const fnGetData = async () => {
HIDDEN_ID: route.query.HIDDEN_ID,
});
data.info = resData.pd;
data.hiddenImgs = addingPrefixToFile(resData.pd.hiddenImgs);
data.ysImgs = addingPrefixToFile(resData.pd.ysImgs);
data.zgImgs = addingPrefixToFile(resData.pd.zgImgs);
};
fnGetData();
</script>

View File

@ -0,0 +1,71 @@
<template>
<div>
<layout-card>
<div id="printContent">
<el-divider content-position="left">检查信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="隐患照片 ">
{{ data.info.INSPECTION_CATEGORY }}
</el-descriptions-item>
<el-descriptions-item label="隐患描述">
{{ data.info.HIDDENDESCR }}
</el-descriptions-item>
<el-descriptions-item label="隐患部位 ">
{{ data.info.HIDDENPART }}
</el-descriptions-item>
<el-descriptions-item label="隐患级别">
{{ data.info.HIDDENLEVEL_NAME }}
</el-descriptions-item>
<el-descriptions-item label="隐患类型 ">
限期整改
</el-descriptions-item>
<el-descriptions-item label="整改期限">
{{ data.info.RECTIFICATIONDEADLINE }}
</el-descriptions-item>
<el-descriptions-item label="整改部门 ">
{{ data.info.RECTIFICATIONDEPT_NAME }}
</el-descriptions-item>
<el-descriptions-item label="整改人">
{{ data.info.RECTIFICATIONOR_NAME }}
</el-descriptions-item>
<el-descriptions-item label="整改时间">
{{ data.info.RECTIFICATIONTIME }}
</el-descriptions-item>
<el-descriptions-item label="整改照片">
{{ data.info.RECTIFICATIONTIME }}
</el-descriptions-item>
<el-descriptions-item label="验收时间">
{{ data.info.CHECKTIME }}
</el-descriptions-item>
<el-descriptions-item label="验收图片">
{{ data.info.CHECKTIME }}
</el-descriptions-item>
<el-descriptions-item label="是否进行罚款">
{{ data.info.ISPUNISH === "1" ? "是" : "否" }}
</el-descriptions-item>
</el-descriptions>
</div>
</layout-card>
</div>
</template>
<script setup>
import { getKeyprojectcheckFindHidden } from "@/request/keyprojects";
import { reactive } from "vue";
import { useRoute } from "vue-router";
const route = useRoute();
const data = reactive({
info: {},
});
const fnGetData = async () => {
const resData = await getKeyprojectcheckFindHidden({
HIDDEN_ID: route.query.HIDDEN_ID,
});
data.info = resData.pd;
};
fnGetData();
</script>
<style scoped lang="scss"></style>

View File

@ -38,7 +38,14 @@
</template>
</el-table-column>
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
<el-table-column prop="DEPARTMENT_NAME" label="监管部门" width="200" />
<el-table-column prop="DEPARTMENT_NAME" label="监管部门">
<template v-slot="{ row }">
<span v-if="row.Q_DEPARTMENT_NAME">
{{ row.Q_DEPARTMENT_NAME }}
</span>
<span v-else>{{ row.DEPARTMENT_NAME }}</span>
</template>
</el-table-column>
<el-table-column
prop="MANAGE_CORPS_NAME"
label="监理单位"

View File

@ -38,11 +38,14 @@
</template>
</el-table-column>
<el-table-column prop="INSPECTION_PLACE" label="检查场所" />
<el-table-column
prop="INSPECTION_STATUS"
label="检查状态"
width="200"
/>
<el-table-column label="检查状态" width="200">
<template v-slot="{ row }">
<span v-if="row.INSPECTION_STATUS === '-1'"></span>
<span v-if="row.INSPECTION_STATUS === '0'"></span>
<span v-if="row.INSPECTION_STATUS === '1'"></span>
<span v-if="row.INSPECTION_STATUS === '2'"></span>
</template>
</el-table-column>
<el-table-column
prop="INSPECTION_TYPE_NAME"
label="检查类型"

View File

@ -2,7 +2,7 @@
<div>
<layout-card>
<div id="printContent">
<el-divider content-position="left">检查信息</el-divider>
<el-divider content-position="left">隐患信息</el-divider>
<el-descriptions border :column="2">
<el-descriptions-item label="检查题目 ">
{{ data.info.INSPECTION_CATEGORY }}
@ -47,7 +47,19 @@
<el-table-column prop="HIDDENDESCR" label="隐患描述" />
<el-table-column label="状态" width="100">
<template v-slot="{ row }">
<el-button type="primary" text link @click="row">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/keyprojects/inspection/hidden_view',
query: {
HIDDEN_ID: row.HIDDEN_ID,
},
})
"
>
查看
</el-button>
</template>
@ -62,6 +74,7 @@
import { getKeyprojectcheckGoEdit } from "@/request/keyprojects";
import { reactive } from "vue";
import { useRoute } from "vue-router";
import router from "@/router";
const route = useRoute();
const data = reactive({

View File

@ -66,7 +66,7 @@
v-model="data.form.UNITS_ID"
clearable
placeholder="请选择相关方"
@change="fnGetUnitUser"
@change="fnGetUnitUser('', '')"
>
<el-option
v-for="item in data.unitsList"
@ -105,10 +105,18 @@
</el-col>
<el-col :span="8">
<el-form-item label="监理单位名称">
<el-input
<el-select
v-model="data.form.MANAGE_NAME"
placeholder="请输入内容"
/>
clearable
placeholder="请选择"
>
<el-option
v-for="item in data.mangeList"
:key="item.CORPINFO_ID"
:label="item.CORP_NAME"
:value="item.CORPINFO_ID"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
@ -126,12 +134,24 @@
</el-col>
<el-col :span="8">
<el-form-item label="集团单位">
<el-input v-model="data.form.GROUP_UNIT" placeholder="请输入内容" />
<el-select
v-model="data.form.GROUP_UNIT"
clearable
placeholder="请选择"
>
<el-option
v-for="item in data.groupCorpList"
:key="item.CORPINFO_ID"
:label="item.CORP_NAME"
:value="item.CORPINFO_ID"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="状态" prop="STATE">
<el-select v-model="data.form.STATE" placeholder="请选择状态">
<el-select v-model="data.form.STATE" placeholder="请选择">
<el-option label="待开始" value="0" />
<el-option label="进行中" value="1" />
<el-option label="已结束" value="2" />
</el-select>
@ -139,59 +159,63 @@
</el-col>
<el-col :span="8">
<el-form-item label="是否发送短信">
<el-input v-model="data.form.IS_SMS" placeholder="请输入内容" />
<el-select v-model="data.form.IS_SMS" placeholder="请选择">
<el-option label="是" value="0" />
<el-option label="否" value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="安全管理协议(附件)" prop="CONTACTS">
<el-input v-model="data.form.CONTACTS" placeholder="请输入内容" />
<el-col :span="24">
<el-form-item label="安全管理协议(附件)" prop="fileList">
<layout-upload
v-model:file-list="data.fileList"
accept=".jpg,.jpeg,.png"
delete-to-server
:limit="9"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-divider content-position="left">
处罚相关&nbsp;&nbsp;
<el-button size="small" @click="addInspector"> </el-button>
</el-divider>
<template>
<template>
<el-divider content-position="left"> 处罚相关 </el-divider>
<el-row>
<template
v-for="(item, index) in data.form.acceptanceList"
:key="item.id"
>
<el-col :span="11">
<el-col :span="8">
<el-form-item
label="验收部门"
:prop="'acceptanceList.' + index + '.DEPARTMENT_ID'"
label="主管部门"
:prop="'acceptanceList.' + index + '.INSPECTION_DEPARTMENT_ID'"
:rules="{
required: true,
message: '请选择验收部门',
message: '请选择主管部门',
trigger: 'change',
}"
>
<layout-department
v-model="item.DEPARTMENT_ID"
v-model="item.INSPECTION_DEPARTMENT_ID"
@update:model-value="fnInspectDepartmentChange($event, index)"
/>
</el-form-item>
</el-col>
<el-col :span="11">
<el-col :span="8">
<el-form-item
label="验收人"
:prop="'acceptanceList.' + index + '.USER_ID'"
label="处罚人员"
:prop="'acceptanceList.' + index + '.INSPECTION_USER_ID'"
:rules="{
required: true,
message: '请选择验收人',
message: '请选择处罚人员',
trigger: 'change',
}"
>
<el-select
:model-value="item.USER_ID"
:model-value="item.INSPECTION_USER_ID"
@change="
verifyDuplicateSelection(
data.form.acceptanceList,
index,
'USER_ID',
'INSPECTION_USER_ID',
$event
)
"
@ -224,8 +248,8 @@
</el-form-item>
</el-col>
</template>
</template>
</template>
</el-row>
</el-form>
<div class="tc mt-10">
<el-button type="primary" @click="fnSubmit"> </el-button>
</div>
@ -240,6 +264,7 @@ import {
setOutsourcedEdit,
setOutsourcedGoEdit,
setPersonnelmanagementListAll,
getCorpinfoListAll,
} from "@/request/keyprojects";
import { ElMessage } from "element-plus";
import { debounce } from "throttle-debounce";
@ -247,6 +272,8 @@ import { reactive, ref } from "vue";
import { useRoute, useRouter } from "vue-router";
import LayoutDepartment from "@/components/department/index.vue";
import { getUserListAll } from "@/request/data_dictionary";
import { verifyDuplicateSelection } from "@/assets/js/utils.js";
import LayoutUpload from "@/components/upload/index.vue";
const router = useRouter();
const route = useRoute();
@ -279,26 +306,26 @@ const data = reactive({
acceptanceList: [
{
id: Math.random(),
DEPARTMENT_ID: "",
USER_ID: "",
INSPECTION_DEPARTMENT_ID: "",
INSPECTION_USER_ID: "",
userList: [],
},
],
},
inspectorList: [
{ INSPECTION_DEPARTMENT_ID: "", INSPECTION_USER_ID: "", USER_SIDE: "" },
],
fileList: [],
INSPECTOR_List: [],
unitsList: [],
groupCorpList: [],
mangeList: [],
});
const addInspector = () => {
data.inspectorList.push({
const fnAddInspectedList = () => {
data.form.acceptanceList.push({
id: Math.random(),
INSPECTION_DEPARTMENT_ID: "",
INSPECTION_USER_ID: "",
USER_SIDE: "",
userList: [],
});
data.INSPECTOR_List.push([]);
};
const fnGetData = async () => {
@ -307,21 +334,52 @@ const fnGetData = async () => {
});
data.form = resData.pd;
data.form.acceptanceList = resData.punishThePerson;
data.form.STARTTIME_TIMES = [resData.pd.STARTTIME, resData.pd.ENDTIME];
data.form.DEPARTMENT_ID = data.form.DEPARTMENT_ID.split(",");
data.form.INVOLVING_CORPS_DEPART_ID =
data.form.INVOLVING_CORPS_DEPART_ID.split(",");
fnGetUnitUser(resData.pd.UNITS_PIC, resData.pd.UNITS_PHONE);
for (let index = 0; index < data.form.acceptanceList.length; index++) {
const item = data.form.acceptanceList[index];
fnInspectDepartmentChange(item.INSPECTION_DEPARTMENT_ID, index);
}
for (let index = 0; index < resData.file9.length; index++) {
resData.file9[index].name = resData.file9[index].FILE_NAME;
}
data.fileList = resData.file9;
};
if (route.query.type === "edit") fnGetData();
const fnGetCorpList = async () => {
const resData2 = await getCorpinfoListAll({});
data.mangeList = resData2.varList;
resData2.varList.forEach((item) => {
if (
item.CORPINFO_ID === "1e6dbbe16004402f8d2c0e52afd9a676" ||
item.CORPINFO_ID === "3a854eefa7894e06aaa1a2611bca80f6" ||
item.CORPINFO_ID === "020578a4c1f04bc692ee25145c2efbe5" ||
item.CORPINFO_ID === "90966974de3c4b83aca6f8fd6432d5c2"
) {
data.groupCorpList.push(item);
}
});
};
fnGetCorpList();
const fnGetUnitsList = async () => {
const resData = await getUnitsListAll({});
data.unitsList = resData.varList;
};
fnGetUnitsList();
const fnGetUnitUser = async () => {
const fnGetUnitUser = async (UNITS_PIC, UNITS_PHONE) => {
const resData = await setPersonnelmanagementListAll({
UNITS_ID: data.form.UNITS_ID,
});
data.form.UNITS_PIC = "";
data.form.UNITS_PHONE = "";
data.form.UNITS_PIC = UNITS_PIC;
data.form.UNITS_PHONE = UNITS_PHONE;
data.unitsUserList = resData.varList;
};
@ -345,6 +403,7 @@ const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const formData = new FormData();
Object.keys(data.form).forEach((key) => {
formData.append(key, data.form[key]);
@ -353,6 +412,24 @@ const fnSubmit = debounce(
formData.append("STARTTIME", data.form.STARTTIME_TIMES[0]);
formData.append("ENDTIME", data.form.STARTTIME_TIMES[1]);
}
let PUNISH_THE_PERSON = "";
data.form.acceptanceList.forEach((item) => {
PUNISH_THE_PERSON = item.INSPECTION_USER_ID + "," + PUNISH_THE_PERSON;
});
if (PUNISH_THE_PERSON.length > 0) {
PUNISH_THE_PERSON = PUNISH_THE_PERSON.substr(
0,
PUNISH_THE_PERSON.length - 1
);
}
formData.set("PUNISH_THE_PERSON", PUNISH_THE_PERSON);
for (let index = 0; index < data.fileList.length; index++) {
const item = data.fileList[index];
formData.append("file9", item.raw);
}
route.query.type === "edit"
? await setOutsourcedEdit(formData)
: await setOutsourcedAdd(formData);

View File

@ -62,7 +62,7 @@
/>
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
<el-table-column prop="UNITS_NAME" label="施工相关方" />
<el-table-column prop="UNITS_NAME" label="辖区单位">
<el-table-column label="辖区单位">
<template v-slot="{ row }">
<span v-if="row.JURISDICTION_UNIT_NAME">
{{ row.JURISDICTION_UNIT_NAME }}
@ -89,11 +89,12 @@
<el-table-column prop="MANAGE_CORPS_NAME" label="监理单位" />
<el-table-column prop="STATE" label="状态">
<template v-slot="{ row }">
<span v-if="row.STATE === '0'"></span>
<span v-if="row.STATE === '1'"></span>
<span v-if="row.STATE === '2'"></span>
</template>
</el-table-column>
<el-table-column prop="OUTSOURCED_CREATOR_NAME" label="创建人" />
<el-table-column prop="CREATOR" label="创建人" />
<el-table-column label="操作" align="center" width="200">
<template v-slot="{ row }">
<el-button
@ -111,9 +112,24 @@
>
查看
</el-button>
<el-button type="primary" text link v-if="row.STATE === '1'">
<el-button
type="primary"
text
link
v-if="row.STATE === '1'"
@click="fnHandleJie(row.OUTSOURCED_ID)"
>
结束
</el-button>
<el-button
type="primary"
text
link
v-if="row.STATE === '0'"
@click="fnHandleStart(row.OUTSOURCED_ID)"
>
审批
</el-button>
<el-button
type="primary"
text
@ -167,10 +183,12 @@ import {
getOutsourcedList,
getUnitsListAll,
setOutsourcedDelete,
getOutsourcedJie,
getOutsourcedStart,
} from "@/request/keyprojects.js";
import { reactive } from "vue";
import router from "@/router";
import { ElMessageBox } from "element-plus";
import { ElMessage, ElMessageBox } from "element-plus";
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getOutsourcedList);
@ -194,6 +212,30 @@ const fnHandleDelete = async (OUTSOURCED_ID) => {
type: "warning",
});
await setOutsourcedDelete({ OUTSOURCED_ID });
ElMessage.success("删除成功");
fnGetData();
};
const fnHandleJie = async (OUTSOURCED_ID) => {
await ElMessageBox.confirm("确定要结束吗?", {
type: "warning",
});
const resData = await getOutsourcedJie({ OUTSOURCED_ID });
if (resData.code === "0") {
ElMessage.success("操作成功");
} else {
ElMessage.warning(resData.message);
}
fnGetData();
};
const fnHandleStart = async (OUTSOURCED_ID) => {
const resData = await getOutsourcedStart({ OUTSOURCED_ID });
if (resData.code === "0") {
ElMessage.success("审批成功");
} else {
ElMessage.warning(resData.message);
}
fnGetData();
};
</script>

View File

@ -27,7 +27,10 @@
{{ data.info.JURISDICTION_UNIT_NAME }}
</el-descriptions-item>
<el-descriptions-item label="企业监督部门">
{{ data.info.DEPARTMENT_NAME }}
<span v-if="data.info.Q_COMPETENT_DEPT_NAME">
{{ data.info.Q_COMPETENT_DEPT_NAME }}
</span>
<span v-else>{{ data.info.MANAGER_DEPARTMENT_NAME }}</span>
</el-descriptions-item>
<el-descriptions-item label="企业辖区部门" :span="2">
{{ data.info.INVOLVING_CORPS_DEPART_NAME }}
@ -63,12 +66,14 @@
{{ data.info.IS_SMS === "0" ? "是" : "否" }}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{ data.info.STATE === "1" ? "进行中" : "已结束" }}
<span v-if="data.info.STATE === '0'"></span>
<span v-if="data.info.STATE === '1'"></span>
<span v-if="data.info.STATE === '2'"></span>
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">处罚相关</el-divider>
<el-descriptions border :column="2">
<div v-for="(item, index) in punishThePerson" :key="index">
<div v-for="(item, index) in data.punishThePerson" :key="index">
<el-descriptions-item label="处罚人员部门">
{{ item.punishname }}
</el-descriptions-item>

View File

@ -1,12 +1,14 @@
<template>
<el-dialog v-model="visible" :title="title" width="600" :on-close="fnClose">
<el-form ref="formRef" :rules="rules" :model="form" label-width="110px">
<el-form
ref="formRef"
:rules="rules"
:model="form"
label-width="110px"
:disabled="type === 'view'"
>
<el-form-item label="单位名称" prop="UNITS_ID">
<el-select
:disabled="type === 'view'"
v-model="form.UNITS_ID"
placeholder="请选择状态"
>
<el-select v-model="form.UNITS_ID" placeholder="请选择状态">
<el-option
v-for="item in data.unitsnameList"
:key="item.UNITS_ID"
@ -16,11 +18,7 @@
</el-select>
</el-form-item>
<el-form-item label="作业类别">
<el-select
:disabled="type === 'view'"
v-model="form.JOB_TYPE"
placeholder="请选择状态"
>
<el-select v-model="form.JOB_TYPE" placeholder="请选择状态">
<el-option
v-for="item in jobtypeList"
:key="item.DICTIONARIES_ID"
@ -30,7 +28,14 @@
</el-select>
</el-form-item>
<el-form-item label="操作项目">
<el-input v-model="form.OPERATIONITEM" :disabled="type === 'view'" />
<el-select v-model="form.OPERATIONITEM" placeholder="请选择状态">
<el-option
v-for="item in data.operationitemList"
:key="item.DICTIONARIES_ID"
:label="item.NAME"
:value="item.DICTIONARIES_ID"
/>
</el-select>
</el-form-item>
<el-form-item label="手机号码" prop="PHONENUM">
<el-input v-model="form.PHONENUM" :disabled="type === 'view'" />
@ -52,7 +57,12 @@
<el-input v-model="form.CERTIFICATE_NUM" :disabled="type === 'view'" />
</el-form-item>
<el-form-item label="复审时间">
<el-input v-model="form.REVIEWTIME" :disabled="type === 'view'" />
<el-date-picker
v-model="form.REVIEWTIME"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
type="date"
/>
</el-form-item>
<el-form-item label="身份证号码">
<el-input v-model="form.IDENTITYCARD" :disabled="type === 'view'" />
@ -82,7 +92,7 @@
<script setup>
import { useVModels } from "@vueuse/core";
import { reactive, ref } from "vue";
import { reactive, ref, watchEffect } from "vue";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { ElMessage } from "element-plus";
@ -92,6 +102,7 @@ import {
setPersonnelmanagementAdd,
setPersonnelmanagementEdit,
} from "@/request/keyprojects";
import { getLevels } from "@/request/data_dictionary.js";
const props = defineProps({
visible: {
@ -132,28 +143,30 @@ const rules = {
],
};
const formRef = ref(null);
const data = reactive({
unitsnameList: [],
operationitemList: [],
});
const formRef = ref(null);
const fnClose = () => {
formRef.value.resetFields();
visible.value = false;
data.operationitemList = [];
};
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const form = props.form;
if (form.VALID_TIME && form.VALID_TIME.length !== 0) {
form.VALID_STIME = form.VALID_TIME[0];
form.VALID_ETIME = form.VALID_TIME[1];
}
props.type === "add"
? await setPersonnelmanagementAdd(props.form)
: await setPersonnelmanagementEdit(props.form);
? await setPersonnelmanagementAdd(form)
: await setPersonnelmanagementEdit(form);
ElMessage.success("提交成功");
fnClose();
emits("get-data");
@ -167,6 +180,15 @@ const fnUnitsListAll = async () => {
data.unitsnameList = resData.varList;
};
fnUnitsListAll();
const fnChangeType = async (DICTIONARIES_ID) => {
const resData = await getLevels({ DICTIONARIES_ID });
data.operationitemList = resData.list;
};
watchEffect(() => {
if (form.value.JOB_TYPE) fnChangeType(form.value.JOB_TYPE);
});
</script>
<style scoped lang="scss"></style>

View File

@ -57,9 +57,14 @@
<el-table-column prop="CREATOR_NAME" label="添加人" width="200" />
<el-table-column prop="UNITS_NAME" label="单位名称" width="150" />
<el-table-column prop="JOBTYPE" label="作业类别" width="100" />
<el-table-column prop="OPERATIONITEM" label="操作项目" />
<el-table-column prop="OPERATIONITEM_NAME" label="操作项目" />
<el-table-column prop="NAME" label="姓名" />
<el-table-column prop="SEX" label="性别" />
<el-table-column prop="SEX" label="性别">
<template v-slot="{ row }">
<span v-if="row.SEX === '0'"></span>
<span v-if="row.SEX === '1'"></span>
</template>
</el-table-column>
<el-table-column prop="CERTIFICATE_NUM" label="作业证书编号" />
<el-table-column prop="REVIEWTIME" label="复审时间" />
<el-table-column label="操作" align="center" width="240">
@ -183,6 +188,10 @@ const fnGoEdit = async (id) => {
PERSONNELMANAGEMENT_ID: id,
});
data.editDialog.form = resData.pd;
data.editDialog.form.VALID_TIME = [
resData.pd.VALID_STIME,
resData.pd.VALID_ETIME,
];
};
const fnResetPaginationTransfer = () => {

View File

@ -38,7 +38,14 @@
</template>
</el-table-column>
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
<el-table-column prop="DEPARTMENT_NAME" label="监管部门" width="200" />
<el-table-column prop="DEPARTMENT_NAME" label="监管部门">
<template v-slot="{ row }">
<span v-if="row.Q_DEPARTMENT_NAME">
{{ row.Q_DEPARTMENT_NAME }}
</span>
<span v-else>{{ row.DEPARTMENT_NAME }}</span>
</template>
</el-table-column>
<el-table-column
prop="MANAGE_CORPS_NAME"
label="监理单位"

View File

@ -47,7 +47,7 @@
</el-table-column>
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" />
<el-table-column prop="REASON" label="处罚原因" width="200" />
<el-table-column prop="CREATOR_NAME" label="下发人" width="150" />
<el-table-column prop="CREATOR_NAMES" label="下发人" width="150" />
<el-table-column
prop="OUTSOURCED_NAME"
label="被处罚单位"
@ -67,7 +67,7 @@
link
@click="
router.push({
path: '/keyprojects/inspection/record_view',
path: '/keyprojects/punish/record_view',
query: {
KEYPROJECTPUNISH_ID: row.KEYPROJECTPUNISH_ID,
},

View File

@ -23,7 +23,13 @@
{{ data.info.DATE }}
</el-descriptions-item>
<el-descriptions-item label="罚款缴纳单 ">
{{ data.info.INSPECTION_TIME_START }}
<img
v-viewer
:src="FILE_URL + data.info.HANDLE_IMG"
width="100"
height="100"
class="ml"
/>
</el-descriptions-item>
<el-descriptions-item label="处罚处理人">
{{ data.info.PERSON_NAME }}
@ -42,6 +48,7 @@ import { getKeyprojectpunishGoEdit } from "@/request/keyprojects";
import { reactive } from "vue";
import { useRoute } from "vue-router";
const FILE_URL = import.meta.env.VITE_FILE_URL;
const route = useRoute();
const data = reactive({
info: {},

View File

@ -1,106 +0,0 @@
<template>
<div>
<el-card>
<el-form
:model="searchForm"
label-width="100px"
@submit.prevent="fnResetPagination"
>
<el-row>
<el-col :span="4">
<el-form-item label="关键字搜索" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<el-button type="primary" native-type="submit">搜索</el-button>
<el-button native-type="reset" @click="fnResetPaginationTransfer">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<layout-card>
<layout-table
ref="tableRef"
:data="list"
@get-data="fnGetData"
v-model:pagination="pagination"
row-key="UNITS_ID"
>
<el-table-column reserve-selection type="selection" width="55" />
<el-table-column label="序号" width="60">
<template #default="{ $index }">
{{ serialNumber(pagination, $index) }}
</template>
</el-table-column>
<el-table-column prop="CREATOR_CORP_NAME" label="添加单位" />
<el-table-column prop="CREATOR_NAME" label="添加人" width="200" />
<el-table-column prop="UNITS_NAME" label="单位名称" width="150" />
<el-table-column prop="JOBTYPE" label="作业类别" width="100" />
<el-table-column prop="OPERATIONITEM" label="操作项目" />
<el-table-column prop="NAME" label="姓名" />
<el-table-column prop="SEX" label="性别" />
<el-table-column prop="CERTIFICATE_NUM" label="作业证书编号" />
<el-table-column prop="REVIEWTIME" label="复审时间" />
<el-table-column label="操作" align="center" width="120">
<template v-slot="{ row }">
<el-button
type="primary"
text
link
@click="fnView(row.PERSONNELMANAGEMENT_ID)"
>
查看
</el-button>
</template>
</el-table-column>
</layout-table>
</layout-card>
</div>
</template>
<script setup>
import useListData from "@/assets/js/useListData";
import { serialNumber } from "@/assets/js/utils";
import {
getPersonnelmanagementList,
setPersonnelmanagementGoEdit,
} from "@/request/keyprojects.js";
import { reactive } from "vue";
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
useListData(getPersonnelmanagementList);
const data = reactive({
type: "",
title: "",
editDialog: {
visible: false,
form: {},
},
});
const fnGoEdit = async (id) => {
const resData = await setPersonnelmanagementGoEdit({
PERSONNELMANAGEMENT_ID: id,
});
data.editDialog.form = resData.pd;
};
const fnResetPaginationTransfer = () => {
fnGetData(searchForm);
};
const fnView = async (id) => {
data.editDialog.form = {};
data.editDialog.visible = true;
data.editDialog.type = "view";
data.editDialog.title = "查看";
fnGoEdit(id);
};
</script>
<style scoped></style>