Compare commits
No commits in common. "9c4f408256ae22c048e5f4d9b8d2f657a5f6c749" and "16cf0e8b69b321c43360485b741a0908423e24aa" have entirely different histories.
9c4f408256
...
16cf0e8b69
|
|
@ -14,7 +14,7 @@
|
|||
<el-option
|
||||
v-for="item in data.personList"
|
||||
:key="item.id"
|
||||
:label="item.u_name"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
|
|
|
|||
|
|
@ -218,8 +218,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
entrance === 'archive' &&
|
||||
row.STEP_ID !== -1
|
||||
"
|
||||
type="danger"
|
||||
text
|
||||
|
|
@ -240,7 +240,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<layout-video
|
||||
v-model:visible="data.videoDialog.visible"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.workshopUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID">
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.leaderUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="煤气防护站负责人" prop="APPROVE_USER_ID">
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.approveUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="总调度室负责人" prop="PROJECT_MANAGER_USER_ID">
|
||||
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.projectUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -151,18 +151,23 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async () => {
|
||||
const resData = await getBlindBoardVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
return ElMessage.error("该申请单位已存在");
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getBlindBoardVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
callback(new Error("该申请部门已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
const rules = {
|
||||
APPLY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
LEADER_DEPARTMENT_ID: [
|
||||
{
|
||||
|
|
@ -217,24 +222,24 @@ const data = reactive({
|
|||
|
||||
const fnLeaderDepartmentChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_USER_ID = [];
|
||||
form.value.LEADER_USER_ID = "";
|
||||
};
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
form.value.AUDIT_USER_ID = "";
|
||||
};
|
||||
const fnApproveDepartmentChange = () => {
|
||||
data.approveUserList = [];
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
form.value.APPROVE_USER_ID = "";
|
||||
};
|
||||
const fnWorkshopDepartmentChange = () => {
|
||||
data.workshopUserList = [];
|
||||
form.value.WORKSHOP_USER_ID = [];
|
||||
form.value.WORKSHOP_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnProjectDepartmentChange = () => {
|
||||
data.projectUserList = [];
|
||||
form.value.PROJECT_MANAGER_USER_ID = [];
|
||||
form.value.PROJECT_MANAGER_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
|
|
@ -247,39 +252,11 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
await useFormValidate(formRef);
|
||||
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID
|
||||
? form.WORKSHOP_USER_ID.join(",")
|
||||
: "";
|
||||
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||
? form.LEADER_USER_ID.join(",")
|
||||
: "";
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||
? form.AUDIT_USER_ID.join(",")
|
||||
: "";
|
||||
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||
? form.APPROVE_USER_ID.join(",")
|
||||
: "";
|
||||
const PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID
|
||||
? form.PROJECT_MANAGER_USER_ID.join(",")
|
||||
: "";
|
||||
const params = {
|
||||
...form,
|
||||
WORKSHOP_USER_ID,
|
||||
LEADER_USER_ID,
|
||||
AUDIT_USER_ID,
|
||||
APPROVE_USER_ID,
|
||||
PROJECT_MANAGER_USER_ID,
|
||||
};
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel();
|
||||
if (!isCon) {
|
||||
await setBlindBoardConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setBlindBoardConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setBlindBoardConfigurationUserEdit(params);
|
||||
await setBlindBoardConfigurationUserEdit(form);
|
||||
}
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
|
|
@ -328,7 +305,6 @@ watchEffect(() => {
|
|||
if (form.value.PROJECT_MANAGER_DEPARTMENT_ID)
|
||||
fnGetProjectUser(form.value.PROJECT_MANAGER_DEPARTMENT_ID);
|
||||
});
|
||||
watchEffect(() => {});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -169,16 +169,16 @@ const data = reactive({
|
|||
CONFIGURATION_ID: "",
|
||||
APPLY_DEPARTMENT_ID: "",
|
||||
WORK_LEVEL: "",
|
||||
WORKSHOP_DEPARTMENT_ID: "",
|
||||
WORKSHOP_USER_ID: [],
|
||||
LEADER_DEPARTMENT_ID: "",
|
||||
LEADER_USER_ID: [],
|
||||
LEADER_USER_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
APPROVE_DEPARTMENT_ID: "",
|
||||
APPROVE_USER_ID: [],
|
||||
APPROVE_USER_ID: "",
|
||||
MONITOR_DEPARTMENT_ID: "",
|
||||
MONITOR_USER_ID: "",
|
||||
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
||||
PROJECT_MANAGER_USER_ID: [],
|
||||
PROJECT_MANAGER_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -228,13 +228,6 @@ const fnGoEdit = async (id) => {
|
|||
const resData = await getBlindBoardConfigurationUserView({
|
||||
CONFIGURATION_ID: id,
|
||||
});
|
||||
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||
resData.pd.WORKSHOP_USER_ID =
|
||||
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||
resData.pd.PROJECT_MANAGER_USER_ID =
|
||||
resData.pd.PROJECT_MANAGER_USER_ID.toString().split(",");
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -224,8 +224,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
entrance === 'archive' &&
|
||||
row.STEP_ID !== -1
|
||||
"
|
||||
type="danger"
|
||||
text
|
||||
|
|
@ -246,7 +246,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<layout-video
|
||||
v-model:visible="data.videoDialog.visible"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.workshopUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID">
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.leaderUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="煤气防护站负责人" prop="APPROVE_USER_ID">
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.approveUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="生产部负责人" prop="SAFETY_USER_ID">
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.safetyUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="公司领导" prop="PROJECT_MANAGER_USER_ID">
|
||||
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.PROJECT_MANAGER_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.projectUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -167,18 +167,24 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async () => {
|
||||
const resData = await getConfinedspaceVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
return ElMessage.error("该申请单位已存在");
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getConfinedspaceVerifyConfigurationUser({
|
||||
WORK_LEVEL: value,
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
callback(new Error("该申请部门已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
const rules = {
|
||||
APPLY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
LEADER_DEPARTMENT_ID: [
|
||||
{
|
||||
|
|
@ -207,10 +213,10 @@ const rules = {
|
|||
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
||||
],
|
||||
SAFETY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择生产部", trigger: "change" },
|
||||
{ required: true, message: "请选择安全部", trigger: "change" },
|
||||
],
|
||||
SAFETY_USER_ID: [
|
||||
{ required: true, message: "请选择生产部负责人", trigger: "change" },
|
||||
{ required: true, message: "请选择安全部负责人", trigger: "change" },
|
||||
],
|
||||
WORKSHOP_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择工段部门", trigger: "change" },
|
||||
|
|
@ -240,28 +246,28 @@ const data = reactive({
|
|||
|
||||
const fnLeaderDepartmentChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_USER_ID = [];
|
||||
form.value.LEADER_USER_ID = "";
|
||||
};
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
form.value.AUDIT_USER_ID = "";
|
||||
};
|
||||
const fnApproveDepartmentChange = () => {
|
||||
data.approveUserList = [];
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
form.value.APPROVE_USER_ID = "";
|
||||
};
|
||||
const fnSafetyDepartmentChange = () => {
|
||||
data.safetyUserList = [];
|
||||
form.value.SAFETY_USER_ID = [];
|
||||
form.value.SAFETY_USER_ID = "";
|
||||
};
|
||||
const fnWorkshopDepartmentChange = () => {
|
||||
data.workshopUserList = [];
|
||||
form.value.WORKSHOP_USER_ID = [];
|
||||
form.value.WORKSHOP_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnProjectDepartmentChange = () => {
|
||||
data.projectUserList = [];
|
||||
form.value.PROJECT_MANAGER_USER_ID = [];
|
||||
form.value.PROJECT_MANAGER_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
|
|
@ -274,43 +280,11 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
await useFormValidate(formRef);
|
||||
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||
? form.LEADER_USER_ID.join(",")
|
||||
: "";
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||
? form.AUDIT_USER_ID.join(",")
|
||||
: "";
|
||||
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||
? form.APPROVE_USER_ID.join(",")
|
||||
: "";
|
||||
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID
|
||||
? form.WORKSHOP_USER_ID.join(",")
|
||||
: "";
|
||||
const SAFETY_USER_ID = form.SAFETY_USER_ID
|
||||
? form.SAFETY_USER_ID.join(",")
|
||||
: "";
|
||||
const PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID
|
||||
? form.PROJECT_MANAGER_USER_ID.join(",")
|
||||
: "";
|
||||
const params = {
|
||||
...form,
|
||||
LEADER_USER_ID,
|
||||
AUDIT_USER_ID,
|
||||
APPROVE_USER_ID,
|
||||
WORKSHOP_USER_ID,
|
||||
SAFETY_USER_ID,
|
||||
PROJECT_MANAGER_USER_ID,
|
||||
};
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel();
|
||||
if (!isCon) {
|
||||
await setConfinedspaceConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setConfinedspaceConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setConfinedspaceConfigurationUserEdit(params);
|
||||
await setConfinedspaceConfigurationUserEdit(form);
|
||||
}
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
|
|
@ -365,7 +339,6 @@ watchEffect(() => {
|
|||
if (form.value.SAFETY_DEPARTMENT_ID)
|
||||
fnGetSafetyUser(form.value.SAFETY_DEPARTMENT_ID);
|
||||
});
|
||||
watchEffect(() => {});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -179,17 +179,15 @@ const data = reactive({
|
|||
APPLY_DEPARTMENT_ID: "",
|
||||
WORK_LEVEL: "",
|
||||
LEADER_DEPARTMENT_ID: "",
|
||||
LEADER_USER_ID: [],
|
||||
LEADER_USER_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
APPROVE_DEPARTMENT_ID: "",
|
||||
APPROVE_USER_ID: [],
|
||||
WORKSHOP_DEPARTMENT_ID: "",
|
||||
WORKSHOP_USER_ID: [],
|
||||
SAFETY_DEPARTMENT_ID: "",
|
||||
SAFETY_USER_ID: [],
|
||||
APPROVE_USER_ID: "",
|
||||
MONITOR_DEPARTMENT_ID: "",
|
||||
MONITOR_USER_ID: "",
|
||||
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
||||
PROJECT_MANAGER_USER_ID: [],
|
||||
PROJECT_MANAGER_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -239,14 +237,6 @@ const fnGoEdit = async (id) => {
|
|||
const resData = await getConfinedspaceConfigurationUserView({
|
||||
CONFIGURATION_ID: id,
|
||||
});
|
||||
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||
resData.pd.WORKSHOP_USER_ID =
|
||||
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||
resData.pd.PROJECT_MANAGER_USER_ID =
|
||||
resData.pd.PROJECT_MANAGER_USER_ID.toString().split(",");
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ import { ref } from "vue";
|
|||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { layoutFnGetInventoryLevel } from "@/assets/js/data_dictionary.js";
|
||||
import LayoutDepartment from "./department.vue";
|
||||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
import { useUserStore } from "@/pinia/user.js";
|
||||
import {
|
||||
setDepartmentAdd,
|
||||
|
|
|
|||
|
|
@ -1,95 +0,0 @@
|
|||
<template>
|
||||
<el-tree-select
|
||||
ref="treeSelectRef"
|
||||
v-model="modelValue"
|
||||
:data="departmentTree"
|
||||
:disabled="disabled"
|
||||
node-key="id"
|
||||
:props="{
|
||||
children: 'nodes',
|
||||
label: 'name',
|
||||
}"
|
||||
:render-after-expand="false"
|
||||
accordion
|
||||
:check-strictly="checkStrictly"
|
||||
:clearable="clearable"
|
||||
:show-checkbox="showCheckbox"
|
||||
:multiple="multiple"
|
||||
:collapse-tags="collapseTags"
|
||||
@check="fnCheck"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { layoutFnGetDepartmentzTree } from "@/assets/js/data_dictionary";
|
||||
import { useVModel } from "@vueuse/core";
|
||||
import { ref, watch } from "vue";
|
||||
|
||||
const treeSelectRef = ref(null);
|
||||
defineOptions({
|
||||
name: "LayoutDepartment",
|
||||
});
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
type: [String, Array],
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
checkStrictly: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
showCheckbox: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
collapseTags: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
clearable: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
rootDisabled: {
|
||||
type: String,
|
||||
default: "N",
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:modelValue"]);
|
||||
const modelValue = useVModel(props, "modelValue", emits);
|
||||
// if (props.multiple) {
|
||||
// modelValue.value = [];
|
||||
// }
|
||||
const departmentTree = await layoutFnGetDepartmentzTree({
|
||||
rootDisabled: props.rootDisabled,
|
||||
});
|
||||
|
||||
// 监听 modelValue 变化,确保树加载后设置选中项
|
||||
watch(
|
||||
() => modelValue.value,
|
||||
(newVal) => {
|
||||
if (treeSelectRef.value && newVal && Array.isArray(newVal)) {
|
||||
// 设置树的选中项
|
||||
treeSelectRef.value.setCheckedKeys(newVal);
|
||||
}
|
||||
},
|
||||
{ immediate: true } // 立即执行一次,用于初始化
|
||||
);
|
||||
|
||||
const fnCheck = () => {
|
||||
if (props.showCheckbox && !props.checkStrictly) {
|
||||
modelValue.value = treeSelectRef.value.getCheckedKeys();
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
@ -1,200 +0,0 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" title="告警预览" width="50%" @close="fnClose">
|
||||
<el-scrollbar style="height: 600px">
|
||||
<div
|
||||
v-if="list.length > 0"
|
||||
style="display: flex; flex-wrap: wrap; gap: 20px; margin-top: 10px"
|
||||
>
|
||||
<div
|
||||
v-for="item in list"
|
||||
:id="'_dialog' + item.PLC_ID"
|
||||
:key="item.PLC_ID"
|
||||
style="width: calc(20% - 20px); height: 190px"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
v-else
|
||||
style="
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 600px;
|
||||
"
|
||||
>
|
||||
暂无报警设备
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useVModel } from "@vueuse/core";
|
||||
import * as echarts from "echarts";
|
||||
import { nextTick, onMounted, watch } from "vue";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
},
|
||||
list: {
|
||||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible"]);
|
||||
const visible = useVModel(props, "visible", emits);
|
||||
let myChartMap = {};
|
||||
const fnInitEcharts = (data) => {
|
||||
return new Promise((resolve) => {
|
||||
// const normalColor = "rgb(255,255,255)";
|
||||
// const alarmColor = "rgb(0,255,0)";
|
||||
// const alarmColors = "rgb(0,0,255)";
|
||||
// const normalColors = "rgb(255, 255, 0)";
|
||||
// const assistantColors = "rgb(255,0,0)";
|
||||
const assistantColor = "rgb(0,191,255)";
|
||||
let myChart;
|
||||
if (!myChartMap[`_dialog${data.PLC_ID}`]) {
|
||||
myChart = echarts.init(document.querySelector(`#_dialog${data.PLC_ID}`));
|
||||
} else {
|
||||
myChart = myChartMap[`_dialog${data.PLC_ID}`];
|
||||
}
|
||||
const option = {
|
||||
title: {
|
||||
text: data.TARGET_PLACE.replace(/(.{20})/g, "$1\n"),
|
||||
textStyle: {
|
||||
fontSize: 12,
|
||||
fontWeight: 400,
|
||||
color: assistantColor,
|
||||
lineHeight: 16,
|
||||
},
|
||||
left: "center",
|
||||
top: "0",
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: "gauge",
|
||||
name: "外层辅助",
|
||||
radius: "86%",
|
||||
center: ["50%", "62%"],
|
||||
startAngle: "225",
|
||||
endAngle: "-45",
|
||||
splitNumber: "120",
|
||||
pointer: { show: false },
|
||||
detail: { show: false },
|
||||
data: [{ value: 1 }],
|
||||
title: { show: false },
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: { color: [[1, assistantColor]], width: 3 },
|
||||
},
|
||||
axisTick: { show: false },
|
||||
splitLine: { show: false },
|
||||
axisLabel: { show: false },
|
||||
},
|
||||
{
|
||||
name: "内层数据刻度",
|
||||
type: "gauge",
|
||||
radius: "75%",
|
||||
center: ["50%", "62%"],
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
width: 10,
|
||||
color: [
|
||||
[23 / 200, "#FFFFFF"],
|
||||
[50 / 200, "#00FF00"],
|
||||
[100 / 200, "#0000FF"],
|
||||
[160 / 200, "#FFFF00"],
|
||||
[1, "#FF0000"],
|
||||
// [23/200, normalColor],
|
||||
// [0.50, alarmColor],
|
||||
// [1.0, alarmColors],
|
||||
// [1.60, normalColors],
|
||||
// [2.00, assistantColors],
|
||||
],
|
||||
},
|
||||
},
|
||||
max: 200,
|
||||
splitLine: { show: false },
|
||||
axisTick: { show: false },
|
||||
axisLabel: { show: false },
|
||||
detail: {
|
||||
show: true,
|
||||
offsetCenter: ["0", "80%"],
|
||||
fontSize: 20,
|
||||
color: getColorByValue(data.CURRENT_VALUE),
|
||||
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||
},
|
||||
itemStyle: {
|
||||
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||
color: getColorByValue(data.CURRENT_VALUE),
|
||||
},
|
||||
pointer: { width: 3, length: "95%" },
|
||||
data: [{ value: data.CURRENT_VALUE }],
|
||||
silent: false,
|
||||
},
|
||||
{
|
||||
name: "最内层线",
|
||||
type: "gauge",
|
||||
radius: "50%",
|
||||
center: ["50%", "62%"],
|
||||
startAngle: 360,
|
||||
endAngle: 0,
|
||||
axisLine: { show: false, lineStyle: { opacity: 0 } },
|
||||
splitLine: { show: false, lineStyle: { opacity: 0 } },
|
||||
axisLabel: { show: false },
|
||||
axisTick: {
|
||||
length: 2,
|
||||
splitNumber: 3,
|
||||
lineStyle: { color: assistantColor, width: 2, type: "dashed" },
|
||||
},
|
||||
detail: { show: false },
|
||||
pointer: { show: false },
|
||||
},
|
||||
],
|
||||
};
|
||||
myChart.setOption(option);
|
||||
if (!myChartMap[`_dialog${data.PLC_ID}`]) {
|
||||
myChartMap[`_dialog${data.PLC_ID}`] = myChart;
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
watch(
|
||||
() => [props.list, visible.value],
|
||||
async (value) => {
|
||||
if (value[1]) {
|
||||
await nextTick();
|
||||
fnDisposeEcharts();
|
||||
for (const item of value[0]) {
|
||||
await fnInitEcharts(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
const fnDisposeEcharts = () => {
|
||||
for (const myChartListKey in myChartMap) {
|
||||
myChartMap[myChartListKey].dispose();
|
||||
}
|
||||
myChartMap = {};
|
||||
};
|
||||
const fnClose = () => {
|
||||
fnDisposeEcharts();
|
||||
visible.value = false;
|
||||
};
|
||||
const getColorByValue = (value) => {
|
||||
return value < 24
|
||||
? "rgb(255, 255, 255)" // 白色
|
||||
: value <= 50
|
||||
? "rgb(0, 255, 0)" // 绿色
|
||||
: value <= 100
|
||||
? "rgb(0, 0, 255)" // 蓝色
|
||||
: value <= 160
|
||||
? "rgb(255, 255, 0)" // 黄色
|
||||
: "rgb(255, 0, 0)"; // 红色
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
@ -1,81 +1,33 @@
|
|||
<template>
|
||||
<div class="container">
|
||||
<div style="width: 300px">
|
||||
<div>
|
||||
<el-button
|
||||
size="small"
|
||||
style="
|
||||
margin-right: 10px;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
color: white;
|
||||
border-radius: 4px;
|
||||
padding: 8px 12px;
|
||||
height: 36px;
|
||||
margin-bottom: 10px;
|
||||
"
|
||||
@click="goBack"
|
||||
>
|
||||
<el-icon><arrow-left /></el-icon>
|
||||
返回
|
||||
</el-button>
|
||||
</div>
|
||||
<div style="display: flex; align-items: center; margin-bottom: 10px">
|
||||
<span
|
||||
style="
|
||||
display: inline-block;
|
||||
padding: 8px 12px;
|
||||
margin-bottom: 10px;
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
"
|
||||
>安装地点</span
|
||||
>
|
||||
<el-input
|
||||
v-model="searchTextWait"
|
||||
class="mb-10"
|
||||
placeholder="输入搜索安装地点"
|
||||
style="flex: 1"
|
||||
>
|
||||
<template #append>
|
||||
<el-button :icon="Search" @click="fnSetSearch" />
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div>
|
||||
<el-tree
|
||||
ref="treeRef"
|
||||
node-key="label"
|
||||
accordion
|
||||
:data="treeData"
|
||||
:filter-node-method="fnFilterNode"
|
||||
:default-expanded-keys="defaultExpandedKeys"
|
||||
@node-click="fnNodeClick"
|
||||
/>
|
||||
</div>
|
||||
<el-input
|
||||
v-model="searchTextWait"
|
||||
class="mb-10"
|
||||
placeholder="输入搜索内容"
|
||||
>
|
||||
<template #append>
|
||||
<el-button :icon="Search" @click="fnSetSearch" />
|
||||
</template>
|
||||
</el-input>
|
||||
<el-tree
|
||||
ref="treeRef"
|
||||
node-key="label"
|
||||
accordion
|
||||
:data="treeData"
|
||||
:filter-node-method="fnFilterNode"
|
||||
:default-expanded-keys="[treeData.length > 0 ? treeData[0].label : '']"
|
||||
@node-click="fnNodeClick"
|
||||
/>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<div style="margin-bottom: 20px; padding: 0 20px">
|
||||
<el-breadcrumb separator="/" style="margin-top: 10px">
|
||||
<!-- 动态面包屑项 -->
|
||||
<el-breadcrumb-item
|
||||
v-for="(item, index) in breadcrumbItems"
|
||||
:key="index"
|
||||
style="padding: 0"
|
||||
>
|
||||
{{ item }}
|
||||
</el-breadcrumb-item>
|
||||
</el-breadcrumb>
|
||||
</div>
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 20px; margin-top: 10px">
|
||||
<div
|
||||
v-for="item in list"
|
||||
:id="'_' + item.PLC_ID"
|
||||
:key="item.PLC_ID"
|
||||
style="width: calc(20% - 20px); height: 190px"
|
||||
@click="fnViewInfo(item)"
|
||||
/>
|
||||
</div>
|
||||
<div style="flex: 1; display: flex; flex-wrap: wrap; gap: 20px">
|
||||
<div
|
||||
v-for="item in list"
|
||||
:id="'_' + item.PLC_ID"
|
||||
:key="item.PLC_ID"
|
||||
style="width: calc(20% - 20px); height: 190px"
|
||||
@click="fnViewInfo(item)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<view-info
|
||||
|
|
@ -84,7 +36,6 @@
|
|||
v-model:visible="item.visible"
|
||||
:item="item"
|
||||
/>
|
||||
<waring v-model:visible="waringDialog" :list="waringList" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
|
@ -94,10 +45,7 @@ import ViewInfo from "./components/view_info.vue";
|
|||
import { getEquipmentInfo, getEquipmentTree } from "@/request/gas_alarm.js";
|
||||
import { useUserStore } from "@/pinia/user.js";
|
||||
import { useIntervalFn } from "@vueuse/core";
|
||||
import { Search, ArrowLeft } from "@element-plus/icons-vue";
|
||||
import Waring from "./components/waring.vue";
|
||||
import { ElNotification, ElBreadcrumb, ElBreadcrumbItem } from "element-plus";
|
||||
|
||||
import { Search } from "@element-plus/icons-vue";
|
||||
const { pause, resume } = useIntervalFn(
|
||||
() => {
|
||||
fnGetData();
|
||||
|
|
@ -110,9 +58,6 @@ const treeRef = ref(null);
|
|||
const treeData = ref([]);
|
||||
const searchText = ref("");
|
||||
const searchTextWait = ref("");
|
||||
const breadcrumbItems = ref([]);
|
||||
const defaultExpandedKeys = ref([]); // 新增响应式变量来控制展开节点
|
||||
let isFirstLoad = true; // 标志位,标识是否为首次加载
|
||||
const fnFilterNode = (value, data) => {
|
||||
if (!value) return true;
|
||||
return data.label.includes(value);
|
||||
|
|
@ -120,24 +65,6 @@ const fnFilterNode = (value, data) => {
|
|||
const fnNodeClick = (_data, { data, parent }) => {
|
||||
searchTextWait.value = "";
|
||||
searchText.value = "";
|
||||
|
||||
// 构建面包屑路径
|
||||
const path = [];
|
||||
const current = data;
|
||||
|
||||
// 添加当前节点
|
||||
path.unshift(current.label);
|
||||
|
||||
// 如果有父节点,添加父节点
|
||||
if (parent && parent.data) {
|
||||
if (!parent.data.length) {
|
||||
path.unshift(parent.data.label);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置面包屑数据
|
||||
breadcrumbItems.value = path;
|
||||
|
||||
if (parent.parent) {
|
||||
equipmentInfoParams = {
|
||||
ORG: parent.data.label,
|
||||
|
|
@ -152,16 +79,9 @@ const fnNodeClick = (_data, { data, parent }) => {
|
|||
fnDisposeEcharts();
|
||||
pause();
|
||||
resume();
|
||||
|
||||
// 首次加载后设置标志位为false
|
||||
if (isFirstLoad) {
|
||||
isFirstLoad = false;
|
||||
}
|
||||
};
|
||||
|
||||
const list = ref([]);
|
||||
const waringList = ref([]);
|
||||
const waringDialog = ref(false);
|
||||
const dialog = ref([]);
|
||||
let equipmentInfoParams = {};
|
||||
onMounted(() => {
|
||||
|
|
@ -180,71 +100,15 @@ const fnConversionTree = (data) => {
|
|||
});
|
||||
};
|
||||
const fnGetTreeData = async () => {
|
||||
const { root, npd } = await getEquipmentTree({
|
||||
const { root } = await getEquipmentTree({
|
||||
DEVICE_TYPE: "gdsyyhtbjq01",
|
||||
CORPINFO_ID: userStore.getUserInfo.CORPINFO_ID,
|
||||
});
|
||||
|
||||
treeData.value = fnConversionTree(root.children);
|
||||
|
||||
// 处理 npd.ALLDEPTNAME 值
|
||||
if (npd && npd.ALLDEPTNAME) {
|
||||
// 获取需要展开的节点
|
||||
defaultExpandedKeys.value = [];
|
||||
|
||||
// 遍历树数据,找到包含这些部门名称的一级节点
|
||||
treeData.value.forEach((node) => {
|
||||
if (npd.ALLDEPTNAME.includes(node.label)) {
|
||||
defaultExpandedKeys.value.push(node.label);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 只在首次加载时设置默认展开节点
|
||||
if (isFirstLoad && treeData.value.length > 0) {
|
||||
// 如果 defaultExpandedKeys 有值,使用它
|
||||
if (defaultExpandedKeys.value.length > 0) {
|
||||
// 找到对应的节点
|
||||
const targetNode = treeData.value.find(
|
||||
(node) => node.label === defaultExpandedKeys.value[0]
|
||||
);
|
||||
|
||||
// 设置默认展开的节点
|
||||
equipmentInfoParams = {
|
||||
ORG: defaultExpandedKeys.value[0],
|
||||
DEPARTMENT:
|
||||
targetNode && targetNode.children && targetNode.children.length > 0
|
||||
? targetNode.children[0].label
|
||||
: "",
|
||||
};
|
||||
|
||||
breadcrumbItems.value = [
|
||||
defaultExpandedKeys.value[0],
|
||||
targetNode.children[0].label,
|
||||
];
|
||||
} else {
|
||||
defaultExpandedKeys.value = [treeData.value[0].label];
|
||||
// 如果没有设置,默认使用第一个节点
|
||||
equipmentInfoParams = {
|
||||
ORG: treeData.value[0].label,
|
||||
DEPARTMENT: treeData.value[0].children[0].label,
|
||||
};
|
||||
breadcrumbItems.value = [
|
||||
treeData.value[0].label,
|
||||
treeData.value[0].children[0].label,
|
||||
];
|
||||
}
|
||||
} else {
|
||||
equipmentInfoParams = {
|
||||
ORG: treeData.value[0].label,
|
||||
DEPARTMENT: treeData.value[0].children[0].label,
|
||||
};
|
||||
breadcrumbItems.value = [
|
||||
treeData.value[0].label,
|
||||
treeData.value[0].children[0].label,
|
||||
];
|
||||
}
|
||||
|
||||
equipmentInfoParams = {
|
||||
ORG: treeData.value[0].label,
|
||||
DEPARTMENT: treeData.value[0].children[0].label,
|
||||
};
|
||||
resume();
|
||||
};
|
||||
let isPending = false;
|
||||
|
|
@ -259,24 +123,11 @@ const fnGetData = async () => {
|
|||
loading: false,
|
||||
});
|
||||
list.value = varList;
|
||||
waringList.value = varList.filter((item) => item.CURRENT_VALUE >= 24);
|
||||
if (waringList.value.length > 0) {
|
||||
ElNotification({
|
||||
title: "警告",
|
||||
message: `<div style="color:#606266">当前有${waringList.value.length}个设备处于报警状态</div>`,
|
||||
type: "warning",
|
||||
dangerouslyUseHTMLString: true,
|
||||
duration: 5000,
|
||||
onClick: () => {
|
||||
waringDialog.value = true;
|
||||
},
|
||||
});
|
||||
}
|
||||
isPending = false;
|
||||
await nextTick();
|
||||
for (const item of list.value) {
|
||||
list.value.forEach(async (item) => {
|
||||
await fnInitEcharts(item);
|
||||
}
|
||||
});
|
||||
};
|
||||
let myChartMap = {};
|
||||
const fnInitEcharts = (data) => {
|
||||
|
|
@ -335,11 +186,11 @@ const fnInitEcharts = (data) => {
|
|||
lineStyle: {
|
||||
width: 10,
|
||||
color: [
|
||||
[23 / 200, "#FFFFFF"],
|
||||
[50 / 200, "#00FF00"],
|
||||
[100 / 200, "#0000FF"],
|
||||
[160 / 200, "#FFFF00"],
|
||||
[1, "#FF0000"],
|
||||
[23/200, '#FFFFFF'],
|
||||
[50/200, '#00FF00'],
|
||||
[100/200, '#0000FF'],
|
||||
[160/200, '#FFFF00'],
|
||||
[1, '#FF0000']
|
||||
// [23/200, normalColor],
|
||||
// [0.50, alarmColor],
|
||||
// [1.0, alarmColors],
|
||||
|
|
@ -356,12 +207,12 @@ const fnInitEcharts = (data) => {
|
|||
show: true,
|
||||
offsetCenter: ["0", "80%"],
|
||||
fontSize: 20,
|
||||
color: getColorByValue(data.CURRENT_VALUE),
|
||||
color: getColorByValue(data.CURRENT_VALUE)
|
||||
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||
},
|
||||
itemStyle: {
|
||||
// color: data.CURRENT_VALUE >= 24 ? alarmColor : normalColor,
|
||||
color: getColorByValue(data.CURRENT_VALUE),
|
||||
color: getColorByValue(data.CURRENT_VALUE)
|
||||
},
|
||||
pointer: { width: 3, length: "95%" },
|
||||
data: [{ value: data.CURRENT_VALUE }],
|
||||
|
|
@ -416,21 +267,12 @@ const fnDisposeEcharts = () => {
|
|||
myChartMap = {};
|
||||
};
|
||||
const getColorByValue = (value) => {
|
||||
return value < 24
|
||||
? "rgb(255, 255, 255)" // 白色
|
||||
: value <= 50
|
||||
? "rgb(0, 255, 0)" // 绿色
|
||||
: value <= 100
|
||||
? "rgb(0, 0, 255)" // 蓝色
|
||||
: value <= 160
|
||||
? "rgb(255, 255, 0)" // 黄色
|
||||
: "rgb(255, 0, 0)"; // 红色
|
||||
return value < 24 ? 'rgb(255, 255, 255)' : // 白色
|
||||
value <= 50 ? 'rgb(0, 255, 0)' : // 绿色
|
||||
value <= 100 ? 'rgb(0, 0, 255)' : // 蓝色
|
||||
value <= 160 ? 'rgb(255, 255, 0)' : // 黄色
|
||||
'rgb(255, 0, 0)'; // 红色
|
||||
};
|
||||
|
||||
const goBack = () => {
|
||||
window.history.back();
|
||||
};
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
fnDisposeEcharts();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -201,8 +201,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
entrance === 'archive' &&
|
||||
row.STEP_ID !== -1
|
||||
"
|
||||
type="danger"
|
||||
text
|
||||
|
|
@ -223,7 +223,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<layout-video
|
||||
v-model:visible="data.videoDialog.visible"
|
||||
|
|
@ -248,8 +248,7 @@ import {
|
|||
getGroundbreakingList,
|
||||
getTaskSetps,
|
||||
getGroundbreakingFlow,
|
||||
setEightWorkInvalid,
|
||||
getApplyDept,
|
||||
setEightWorkInvalid, getApplyDept
|
||||
} from "@/request/eight_work.js";
|
||||
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
||||
import ShowPoints from "@/views/map_settings/assignment_ticket_area_settings/components/show_points.vue";
|
||||
|
|
|
|||
|
|
@ -22,6 +22,22 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂部门" prop="AUDIT_DEPARTMENT_ID">
|
||||
<layout-department
|
||||
v-model="form.AUDIT_DEPARTMENT_ID"
|
||||
@update:model-value="fnAuditDepartmentChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
||||
label="所在单位"
|
||||
|
|
@ -37,7 +53,7 @@
|
|||
label="所在单位负责人"
|
||||
prop="SAFETY_USER_ID"
|
||||
>
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.safetyUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -46,22 +62,6 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂部门" prop="AUDIT_DEPARTMENT_ID">
|
||||
<layout-department
|
||||
v-model="form.AUDIT_DEPARTMENT_ID"
|
||||
@update:model-value="fnAuditDepartmentChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取 消</el-button>
|
||||
|
|
@ -110,18 +110,23 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async () => {
|
||||
const resData = await getBreakGroundVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
return ElMessage.error("该申请单位已存在");
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getBreakGroundVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
callback(new Error("该申请部门已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
const rules = {
|
||||
APPLY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
|
||||
AUDIT_DEPARTMENT_ID: [
|
||||
|
|
@ -158,12 +163,12 @@ const data = reactive({
|
|||
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
form.value.AUDIT_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnSafetyDepartmentChange = () => {
|
||||
data.safetyUserList = [];
|
||||
form.value.SAFETY_USER_ID = [];
|
||||
form.value.SAFETY_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
|
|
@ -176,28 +181,11 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
|
||||
await useFormValidate(formRef);
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||
? form.AUDIT_USER_ID.join(",")
|
||||
: "";
|
||||
const SAFETY_USER_ID = form.SAFETY_USER_ID
|
||||
? form.SAFETY_USER_ID.join(",")
|
||||
: "";
|
||||
const params = {
|
||||
...form,
|
||||
AUDIT_USER_ID,
|
||||
SAFETY_USER_ID,
|
||||
};
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel();
|
||||
if (!isCon) {
|
||||
await setBreakGroundConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setBreakGroundConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setBreakGroundConfigurationUserEdit(params);
|
||||
await setBreakGroundConfigurationUserEdit(form);
|
||||
}
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
|
|
@ -227,8 +215,8 @@ watchEffect(() => {
|
|||
fnGetAuditUser(form.value.AUDIT_DEPARTMENT_ID);
|
||||
if (form.value.SAFETY_DEPARTMENT_ID)
|
||||
fnGetSafetyUser(form.value.SAFETY_DEPARTMENT_ID);
|
||||
|
||||
});
|
||||
watchEffect(() => {});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -48,16 +48,6 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="APPLY_DEPARTMENT_NAME" label="申请单位" />
|
||||
<el-table-column
|
||||
prop="SAFETY_DEPARTMENT_NAME"
|
||||
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位"
|
||||
width="350"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位负责人"
|
||||
width="390"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="AUDIT_DEPARTMENT_NAME"
|
||||
label="分厂部门"
|
||||
|
|
@ -68,6 +58,16 @@
|
|||
label="分厂部门负责人"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_DEPARTMENT_NAME"
|
||||
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位"
|
||||
width="350"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="水、电、汽、工艺、设备、消防、 安全管理等动土所在单位负责人"
|
||||
width="390"
|
||||
/>
|
||||
|
||||
<el-table-column label="操作" align="center" width="240">
|
||||
<template #default="{ row }">
|
||||
|
|
@ -138,9 +138,9 @@ const data = reactive({
|
|||
CONFIGURATION_ID: "",
|
||||
APPLY_DEPARTMENT_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
SAFETY_DEPARTMENT_ID: "",
|
||||
SAFETY_USER_ID: [],
|
||||
SAFETY_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -192,8 +192,6 @@ const fnGoEdit = async (id) => {
|
|||
const resData = await getBreakGroundConfigurationUserView({
|
||||
CONFIGURATION_ID: id,
|
||||
});
|
||||
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ const fnSubmit = debounce(
|
|||
...params,
|
||||
// 来源 2风险清单 隐患清单
|
||||
SOURCE: "2",
|
||||
HAVESCHEME: 0,
|
||||
RISK_UNIT: props.info.RISKUNITNAME,
|
||||
IDENTIFICATION: props.info.PARTSNAME,
|
||||
RISK_DESCR: props.info.RISK_DESCR,
|
||||
|
|
|
|||
|
|
@ -98,7 +98,6 @@ const fnSubmit = debounce(
|
|||
...form.value,
|
||||
STATE: "16",
|
||||
HAVESCHEME: 0,
|
||||
IS_REBUILD: 0,
|
||||
HIDDENTYPE1: form.value.HIDDENTYPE[0],
|
||||
HIDDENTYPE2: form.value.HIDDENTYPE[1],
|
||||
HIDDENTYPE3: form.value.HIDDENTYPE[2],
|
||||
|
|
|
|||
|
|
@ -11,9 +11,6 @@
|
|||
<el-divider />
|
||||
<el-checkbox-group v-model="checkOptions" @change="fnCheckedChange">
|
||||
<el-row>
|
||||
<el-col v-for="(item, index) in defaultOptions" :key="index" :span="4">
|
||||
<el-checkbox :label="item" :value="item" />
|
||||
</el-col>
|
||||
<el-col v-for="(item, index) in options" :key="index" :span="4">
|
||||
<el-checkbox :label="item" :value="item" />
|
||||
</el-col>
|
||||
|
|
@ -74,6 +71,7 @@ const options = [
|
|||
"检查内容",
|
||||
"隐患级别",
|
||||
"隐患状态",
|
||||
"隐患部位",
|
||||
"隐患发现部门",
|
||||
"发现人",
|
||||
"隐患确认部门",
|
||||
|
|
@ -100,13 +98,12 @@ const options = [
|
|||
"验收时间",
|
||||
"验收图片",
|
||||
];
|
||||
const checkAll = ref(false);
|
||||
const checkAll = ref(true);
|
||||
const isIndeterminate = ref(false);
|
||||
const checkOptions = ref(defaultOptions);
|
||||
const checkOptions = ref(options);
|
||||
const havePicture = ref(false);
|
||||
const fnCheckAllChange = (val) => {
|
||||
// 把defaultOptions+options赋给checkOptions
|
||||
checkOptions.value = val ? [...defaultOptions, ...options] : [];
|
||||
checkOptions.value = val ? options : [];
|
||||
isIndeterminate.value = false;
|
||||
};
|
||||
const fnCheckedChange = (value) => {
|
||||
|
|
@ -116,15 +113,16 @@ const fnCheckedChange = (value) => {
|
|||
};
|
||||
const fnClose = () => {
|
||||
visible.value = false;
|
||||
checkOptions.value = defaultOptions;
|
||||
checkOptions.value = options;
|
||||
isIndeterminate.value = false;
|
||||
checkAll.value = false;
|
||||
checkAll.value = true;
|
||||
havePicture.value = false;
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
() => {
|
||||
checkOptions.value = [...checkOptions.value];
|
||||
checkOptions.value = [...defaultOptions, ...checkOptions.value];
|
||||
console.log(checkOptions.value);
|
||||
let data = {
|
||||
havePicture: 1,
|
||||
ids: props.ids.join(","),
|
||||
|
|
|
|||
|
|
@ -7,18 +7,6 @@
|
|||
@submit.prevent="fnResetPaginationTransfer"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="隐患区域" prop="checkedIds">
|
||||
<layout-department
|
||||
v-model="searchForm.checkedIds"
|
||||
show-checkbox
|
||||
multiple
|
||||
collapse-tags
|
||||
:check-strictly="false"
|
||||
root-disabled="Y"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="隐患描述" prop="KEYWORDS">
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
|
|
@ -125,15 +113,19 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label-width="10px" class="end">
|
||||
<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-button type="success" @click="fnReport"> 上报</el-button>-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label-width="10px" class="end">
|
||||
<el-button @click="fnPrint">打印</el-button>
|
||||
<el-button @click="fnExport">导出</el-button>
|
||||
<!-- <el-button type="success" @click="fnReport"> 上报</el-button>-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
|
@ -211,9 +203,7 @@
|
|||
/>
|
||||
<el-table-column label="是否合格" width="100">
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.CHECK_STATUS === '1' || row.STATE === '4'">
|
||||
是
|
||||
</span>
|
||||
<span v-if="row.CHECK_STATUS === '1'"> 是 </span>
|
||||
<span v-else> 否 </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -365,7 +355,6 @@ const fnGetDataTransfer = () => {
|
|||
ENDTIME: searchForm.value.dates?.[1],
|
||||
HIDDEN_RECTIFICATION_DEPT_IDS:
|
||||
searchForm.value.HIDDEN_RECTIFICATION_DEPT_IDS?.join(","),
|
||||
checkedIds: searchForm.value.checkedIds?.join(","),
|
||||
HIDDEN_FIND_DEPT_IDS: searchForm.value.HIDDEN_FIND_DEPT_IDS?.join(","),
|
||||
HIDDEN_CONFIRM_DEPT_IDS:
|
||||
searchForm.value.HIDDEN_CONFIRM_DEPT_IDS?.join(","),
|
||||
|
|
@ -377,7 +366,6 @@ const fnResetPaginationTransfer = () => {
|
|||
ENDTIME: searchForm.value.dates?.[1],
|
||||
HIDDEN_RECTIFICATION_DEPT_IDS:
|
||||
searchForm.value.HIDDEN_RECTIFICATION_DEPT_IDS?.join(","),
|
||||
checkedIds: searchForm.value.checkedIds?.join(","),
|
||||
HIDDEN_FIND_DEPT_IDS: searchForm.value.HIDDEN_FIND_DEPT_IDS?.join(","),
|
||||
HIDDEN_CONFIRM_DEPT_IDS:
|
||||
searchForm.value.HIDDEN_CONFIRM_DEPT_IDS?.join(","),
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@
|
|||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
|
|
@ -208,8 +208,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
entrance === 'archive' &&
|
||||
row.STEP_ID !== -1
|
||||
"
|
||||
type="danger"
|
||||
text
|
||||
|
|
@ -230,7 +230,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<layout-video
|
||||
v-model:visible="data.videoDialog.visible"
|
||||
|
|
|
|||
|
|
@ -12,11 +12,7 @@
|
|||
</thead>
|
||||
<tr>
|
||||
<td class="title">作业申请单位</td>
|
||||
<td>
|
||||
{{ data.info.APPLY_DEPARTMENT_NAME }}-{{
|
||||
data.info.APPLY_WORKSHOP_DEPARTMENT_NAME
|
||||
}}
|
||||
</td>
|
||||
<td>{{ data.info.APPLY_DEPARTMENT_NAME }}-{{data.info.APPLY_WORKSHOP_DEPARTMENT_NAME}}</td>
|
||||
<td class="title">申请人</td>
|
||||
<td>{{ data.info.APPLY_USER_NAME }}</td>
|
||||
</tr>
|
||||
|
|
@ -291,7 +287,7 @@
|
|||
</tr>
|
||||
<tr v-if="data.signs.SAFETY">
|
||||
<td colspan="10">
|
||||
<div>生产部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
||||
<div>安全部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
||||
<div
|
||||
v-for="(item, index) in data.signs.SAFETY?.[0].SIGN_TIME"
|
||||
:key="index"
|
||||
|
|
|
|||
|
|
@ -23,12 +23,7 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="高处作业级别" prop="WORK_LEVEL">
|
||||
<el-select
|
||||
v-model="form.WORK_LEVEL"
|
||||
placeholder="请选择高处作业级别"
|
||||
:disabled="props.type === 'edit'"
|
||||
@change="fnWorkLevelChange"
|
||||
>
|
||||
<el-select v-model="form.WORK_LEVEL" placeholder="请选择高处作业级别" :disabled="props.type === 'edit'">
|
||||
<el-option
|
||||
v-for="item in data.levelList"
|
||||
:key="item.id"
|
||||
|
|
@ -44,7 +39,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID">
|
||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.workshopUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -59,13 +54,8 @@
|
|||
@update:model-value="fnLeaderDepartmentChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="分厂贯标中心负责人"
|
||||
prop="LEADER_USER_ID"
|
||||
filterable
|
||||
multiple
|
||||
>
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID" filterable>
|
||||
<el-select v-model="form.LEADER_USER_ID">
|
||||
<el-option
|
||||
v-for="item in data.leaderUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -99,7 +89,7 @@
|
|||
label="分厂负责人"
|
||||
prop="AUDIT_USER_ID"
|
||||
>
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -128,7 +118,7 @@
|
|||
label="安全处负责人"
|
||||
prop="APPROVE_USER_ID"
|
||||
>
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.approveUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -139,7 +129,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
||||
label="生产部"
|
||||
label="安全部"
|
||||
prop="SAFETY_DEPARTMENT_ID"
|
||||
>
|
||||
<layout-department
|
||||
|
|
@ -149,10 +139,10 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.WORK_LEVEL === '4' || !form.WORK_LEVEL"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
prop="SAFETY_USER_ID"
|
||||
>
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.safetyUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -209,15 +199,17 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async (value) => {
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getHighVerifyConfigurationUser({
|
||||
WORK_LEVEL: value,
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
return ElMessage.error("该申请单位和高处作业等级已存在");
|
||||
// callback(new Error("该申请单位和高处作业等级已存在"));
|
||||
callback(new Error("该申请单位和高处作业等级已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -226,8 +218,8 @@ const rules = {
|
|||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||
],
|
||||
WORK_LEVEL: [
|
||||
{ required: true, message: "请选择高处作业等级", trigger: "blur" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ required: true, message: "请选择动火等级", trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
LEADER_DEPARTMENT_ID: [
|
||||
{
|
||||
|
|
@ -256,10 +248,10 @@ const rules = {
|
|||
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
||||
],
|
||||
SAFETY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择生产部", trigger: "change" },
|
||||
{ required: true, message: "请选择安全部", trigger: "change" },
|
||||
],
|
||||
SAFETY_USER_ID: [
|
||||
{ required: true, message: "请选择生产部负责人", trigger: "change" },
|
||||
{ required: true, message: "请选择安全部负责人", trigger: "change" },
|
||||
],
|
||||
WORKSHOP_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择工段部门", trigger: "change" },
|
||||
|
|
@ -300,23 +292,23 @@ const data = reactive({
|
|||
|
||||
const fnLeaderDepartmentChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_USER_ID = [];
|
||||
form.value.LEADER_USER_ID = "";
|
||||
};
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
form.value.AUDIT_USER_ID = "";
|
||||
};
|
||||
const fnApproveDepartmentChange = () => {
|
||||
data.approveUserList = [];
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
form.value.APPROVE_USER_ID = "";
|
||||
};
|
||||
const fnSafetyDepartmentChange = () => {
|
||||
data.safetyUserList = [];
|
||||
form.value.SAFETY_USER_ID = [];
|
||||
form.value.SAFETY_USER_ID = "";
|
||||
};
|
||||
const fnWorkshopDepartmentChange = () => {
|
||||
data.workshopUserList = [];
|
||||
form.value.WORKSHOP_USER_ID = [];
|
||||
form.value.WORKSHOP_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
|
|
@ -329,32 +321,11 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
// if (props.type === "add") {
|
||||
// await fnHasLevel(form.WORK_LEVEL);
|
||||
// }
|
||||
await useFormValidate(formRef);
|
||||
const LEADER_USER_ID = form.LEADER_USER_ID.join(",");
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID.join(",");
|
||||
const APPROVE_USER_ID = form.APPROVE_USER_ID.join(",");
|
||||
const SAFETY_USER_ID = form.SAFETY_USER_ID.join(",");
|
||||
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID.join(",");
|
||||
const params = {
|
||||
...form,
|
||||
LEADER_USER_ID,
|
||||
AUDIT_USER_ID,
|
||||
APPROVE_USER_ID,
|
||||
SAFETY_USER_ID,
|
||||
WORKSHOP_USER_ID,
|
||||
};
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel(form.WORK_LEVEL);
|
||||
if (!isCon) {
|
||||
await setHighConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setHighConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setHighConfigurationUserEdit(params);
|
||||
await setHighConfigurationUserEdit(form);
|
||||
}
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
|
|
@ -403,25 +374,6 @@ watchEffect(() => {
|
|||
if (form.value.WORKSHOP_DEPARTMENT_ID)
|
||||
fnGetWorkshopUser(form.value.WORKSHOP_DEPARTMENT_ID);
|
||||
});
|
||||
|
||||
const fnWorkLevelChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_DEPARTMENT_ID = "";
|
||||
form.value.LEADER_USER_ID = [];
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_DEPARTMENT_ID = "";
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
data.approveUserList = [];
|
||||
form.value.APPROVE_DEPARTMENT_ID = "";
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
data.safetyUserList = [];
|
||||
form.value.SAFETY_DEPARTMENT_ID = "";
|
||||
form.value.SAFETY_USER_ID = [];
|
||||
data.workshopUserList = [];
|
||||
form.value.WORKSHOP_DEPARTMENT_ID = "";
|
||||
form.value.WORKSHOP_USER_ID = [];
|
||||
};
|
||||
watchEffect(() => {});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -99,12 +99,12 @@
|
|||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_DEPARTMENT_NAME"
|
||||
label="生产部"
|
||||
label="安全部"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
width="100"
|
||||
/>
|
||||
|
||||
|
|
@ -178,15 +178,15 @@ const data = reactive({
|
|||
APPLY_DEPARTMENT_ID: "",
|
||||
WORK_LEVEL: "",
|
||||
LEADER_DEPARTMENT_ID: "",
|
||||
LEADER_USER_ID: [],
|
||||
LEADER_USER_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
APPROVE_DEPARTMENT_ID: "",
|
||||
APPROVE_USER_ID: [],
|
||||
APPROVE_USER_ID: "",
|
||||
SAFETY_DEPARTMENT_ID: "",
|
||||
SAFETY_USER_ID: [],
|
||||
SAFETY_USER_ID: "",
|
||||
WORKSHOP_DEPARTMENT_ID: "",
|
||||
WORKSHOP_USER_ID: [],
|
||||
WORKSHOP_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -236,12 +236,6 @@ const fnGoEdit = async (id) => {
|
|||
const resData = await getHighConfigurationUserView({
|
||||
CONFIGURATION_ID: id,
|
||||
});
|
||||
resData.pd.WORKSHOP_USER_ID =
|
||||
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
||||
|
|
@ -123,7 +123,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@
|
|||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column prop="ACCEPT_USER_NAME" label="验收部门负责人" />
|
||||
|
|
@ -207,8 +207,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
entrance === 'archive' &&
|
||||
row.STEP_ID !== -1
|
||||
"
|
||||
type="danger"
|
||||
text
|
||||
|
|
@ -229,7 +229,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<layout-video
|
||||
v-model:visible="data.videoDialog.visible"
|
||||
|
|
@ -254,8 +254,7 @@ import {
|
|||
getHoistingList,
|
||||
getTaskSetps,
|
||||
getHoistingFlow,
|
||||
setEightWorkInvalid,
|
||||
getApplyDept,
|
||||
setEightWorkInvalid, getApplyDept
|
||||
} from "@/request/eight_work.js";
|
||||
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
||||
import ShowPoints from "@/views/map_settings/assignment_ticket_area_settings/components/show_points.vue";
|
||||
|
|
|
|||
|
|
@ -12,11 +12,7 @@
|
|||
</thead>
|
||||
<tr>
|
||||
<td class="title">作业申请单位</td>
|
||||
<td>
|
||||
{{ data.info.APPLY_DEPARTMENT_NAME }}-{{
|
||||
data.info.APPLY_WORKSHOP_DEPARTMENT_NAME
|
||||
}}
|
||||
</td>
|
||||
<td>{{ data.info.APPLY_DEPARTMENT_NAME }}-{{data.info.APPLY_WORKSHOP_DEPARTMENT_NAME}}</td>
|
||||
<td class="title">作业单位</td>
|
||||
<td>{{ data.info.LEADER_DEPARTMENT_NAME }}</td>
|
||||
<td class="title">作业申请时间</td>
|
||||
|
|
@ -319,7 +315,7 @@
|
|||
</tr>
|
||||
<tr v-if="data.signs.SAFETY">
|
||||
<td colspan="10">
|
||||
<div>生产部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
||||
<div>安全部意见:{{ data.signs.SAFETY?.[0].DESCR }}</div>
|
||||
<div
|
||||
v-for="(item, index) in data.signs.SAFETY?.[0].SIGN_TIME"
|
||||
:key="index"
|
||||
|
|
|
|||
|
|
@ -23,12 +23,7 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="作业级别" prop="WORK_LEVEL">
|
||||
<el-select
|
||||
v-model="form.WORK_LEVEL"
|
||||
placeholder="请选择作业级别"
|
||||
:disabled="props.type === 'edit'"
|
||||
@change="fnWorkLevelChange"
|
||||
>
|
||||
<el-select v-model="form.WORK_LEVEL" placeholder="请选择作业级别" :disabled="props.type === 'edit'">
|
||||
<el-option
|
||||
v-for="item in data.levelList"
|
||||
:key="item.id"
|
||||
|
|
@ -43,13 +38,8 @@
|
|||
@update:model-value="fnWorkshopDepartmentChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="工段负责人"
|
||||
prop="WORKSHOP_USER_ID"
|
||||
filterable
|
||||
multiple
|
||||
>
|
||||
<el-select v-model="form.WORKSHOP_USER_ID" filterable multiple>
|
||||
<el-form-item label="工段负责人" prop="WORKSHOP_USER_ID" filterable>
|
||||
<el-select v-model="form.WORKSHOP_USER_ID">
|
||||
<el-option
|
||||
v-for="item in data.workshopUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -64,13 +54,8 @@
|
|||
@update:model-value="fnLeaderDepartmentChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="分厂贯标中心负责人"
|
||||
prop="LEADER_USER_ID"
|
||||
filterable
|
||||
multiple
|
||||
>
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||
<el-form-item label="分厂贯标中心负责人" prop="LEADER_USER_ID" filterable>
|
||||
<el-select v-model="form.LEADER_USER_ID">
|
||||
<el-option
|
||||
v-for="item in data.leaderUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -85,8 +70,8 @@
|
|||
@update:model-value="fnAuditDepartmentChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID" filterable>
|
||||
<el-select v-model="form.AUDIT_USER_ID">
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -111,7 +96,7 @@
|
|||
label="安全处负责人"
|
||||
prop="APPROVE_USER_ID"
|
||||
>
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.approveUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -122,7 +107,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.WORK_LEVEL === '1' || !form.WORK_LEVEL"
|
||||
label="生产部"
|
||||
label="安全部"
|
||||
prop="SAFETY_DEPARTMENT_ID"
|
||||
>
|
||||
<layout-department
|
||||
|
|
@ -132,10 +117,10 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="form.WORK_LEVEL === '1' || !form.WORK_LEVEL"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
prop="SAFETY_USER_ID"
|
||||
>
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.SAFETY_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.safetyUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -192,14 +177,17 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async (value) => {
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getHoistingVerifyConfigurationUser({
|
||||
WORK_LEVEL: value,
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
return ElMessage.error("该申请单位和吊装作业等级已存在");
|
||||
callback(new Error("该申请单位和作业等级已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -209,7 +197,7 @@ const rules = {
|
|||
],
|
||||
WORK_LEVEL: [
|
||||
{ required: true, message: "请选择作业等级", trigger: "blur" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
LEADER_DEPARTMENT_ID: [
|
||||
{
|
||||
|
|
@ -238,10 +226,10 @@ const rules = {
|
|||
{ required: true, message: "请选择安全处负责人", trigger: "change" },
|
||||
],
|
||||
SAFETY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择生产部", trigger: "change" },
|
||||
{ required: true, message: "请选择安全部", trigger: "change" },
|
||||
],
|
||||
SAFETY_USER_ID: [
|
||||
{ required: true, message: "请选择生产部负责人", trigger: "change" },
|
||||
{ required: true, message: "请选择安全部负责人", trigger: "change" },
|
||||
],
|
||||
WORKSHOP_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择工段部门", trigger: "change" },
|
||||
|
|
@ -278,41 +266,23 @@ const data = reactive({
|
|||
|
||||
const fnLeaderDepartmentChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_USER_ID = [];
|
||||
form.value.LEADER_USER_ID = "";
|
||||
};
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
form.value.AUDIT_USER_ID = "";
|
||||
};
|
||||
const fnApproveDepartmentChange = () => {
|
||||
data.approveUserList = [];
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
form.value.APPROVE_USER_ID = "";
|
||||
};
|
||||
const fnSafetyDepartmentChange = () => {
|
||||
data.safetyUserList = [];
|
||||
form.value.SAFETY_USER_ID = [];
|
||||
form.value.SAFETY_USER_ID = "";
|
||||
};
|
||||
const fnWorkshopDepartmentChange = () => {
|
||||
data.workshopUserList = [];
|
||||
form.value.WORKSHOP_USER_ID = [];
|
||||
};
|
||||
|
||||
const fnWorkLevelChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_DEPARTMENT_ID = "";
|
||||
form.value.LEADER_USER_ID = [];
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_DEPARTMENT_ID = "";
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
data.approveUserList = [];
|
||||
form.value.APPROVE_DEPARTMENT_ID = "";
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
data.safetyUserList = [];
|
||||
form.value.SAFETY_DEPARTMENT_ID = "";
|
||||
form.value.SAFETY_USER_ID = [];
|
||||
data.workshopUserList = [];
|
||||
form.value.WORKSHOP_DEPARTMENT_ID = "";
|
||||
form.value.WORKSHOP_USER_ID = [];
|
||||
form.value.WORKSHOP_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
|
|
@ -325,29 +295,11 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
await useFormValidate(formRef);
|
||||
const LEADER_USER_ID = form.LEADER_USER_ID.join(",");
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID.join(",");
|
||||
const APPROVE_USER_ID = form.APPROVE_USER_ID.join(",");
|
||||
const SAFETY_USER_ID = form.SAFETY_USER_ID.join(",");
|
||||
const WORKSHOP_USER_ID = form.WORKSHOP_USER_ID.join(",");
|
||||
const params = {
|
||||
...form,
|
||||
LEADER_USER_ID,
|
||||
AUDIT_USER_ID,
|
||||
APPROVE_USER_ID,
|
||||
SAFETY_USER_ID,
|
||||
WORKSHOP_USER_ID,
|
||||
};
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel(form.WORK_LEVEL);
|
||||
if (!isCon) {
|
||||
await setHoistingConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setHoistingConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setHoistingConfigurationUserEdit(params);
|
||||
await setHoistingConfigurationUserEdit(form);
|
||||
}
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
|
|
|
|||
|
|
@ -98,12 +98,12 @@
|
|||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_DEPARTMENT_NAME"
|
||||
label="生产部"
|
||||
label="安全部"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="SAFETY_USER_NAME"
|
||||
label="生产部负责人"
|
||||
label="安全部负责人"
|
||||
width="100"
|
||||
/>
|
||||
|
||||
|
|
@ -162,7 +162,7 @@ import {
|
|||
getHoistingConfigurationUserView,
|
||||
setHoistingConfigurationUserDelete,
|
||||
setHoistingConfigurationUserDeleteAll,
|
||||
setHoistingConfigurationUserList,
|
||||
setHoistingConfigurationUserList
|
||||
} from "@/request/eight_work.js";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
|
|
@ -177,15 +177,15 @@ const data = reactive({
|
|||
APPLY_DEPARTMENT_ID: "",
|
||||
WORK_LEVEL: "",
|
||||
LEADER_DEPARTMENT_ID: "",
|
||||
LEADER_USER_ID: [],
|
||||
LEADER_USER_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
APPROVE_DEPARTMENT_ID: "",
|
||||
APPROVE_USER_ID: [],
|
||||
APPROVE_USER_ID: "",
|
||||
SAFETY_DEPARTMENT_ID: "",
|
||||
SAFETY_USER_ID: [],
|
||||
SAFETY_USER_ID: "",
|
||||
WORKSHOP_DEPARTMENT_ID: "",
|
||||
WORKSHOP_USER_ID: [],
|
||||
WORKSHOP_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -235,12 +235,6 @@ const fnGoEdit = async (id) => {
|
|||
const resData = await getHoistingConfigurationUserView({
|
||||
CONFIGURATION_ID: id,
|
||||
});
|
||||
resData.pd.WORKSHOP_USER_ID =
|
||||
resData.pd.WORKSHOP_USER_ID.toString().split(",");
|
||||
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||
resData.pd.SAFETY_USER_ID = resData.pd.SAFETY_USER_ID.toString().split(",");
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -217,8 +217,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
entrance === 'archive' &&
|
||||
row.STEP_ID !== -1
|
||||
"
|
||||
type="danger"
|
||||
text
|
||||
|
|
@ -244,7 +244,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<show-points
|
||||
:id="data.showPointsDialog.id"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@
|
|||
v-model="form.WORK_LEVEL"
|
||||
placeholder="请选择动火等级"
|
||||
:disabled="props.type === 'edit'"
|
||||
@change="fnWorkLevelChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.levelList"
|
||||
|
|
@ -205,18 +204,17 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async (value) => {
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getHotVerifyConfigurationUser({
|
||||
WORK_LEVEL: value,
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID) {
|
||||
ElMessage.error("该申请单位和动火等级已存在");
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
callback(new Error("该申请单位和动火等级已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -226,7 +224,7 @@ const rules = {
|
|||
],
|
||||
WORK_LEVEL: [
|
||||
{ required: true, message: "请选择动火等级", trigger: "blur" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
LEADER_DEPARTMENT_ID: [
|
||||
{
|
||||
|
|
@ -293,29 +291,10 @@ const data = reactive({
|
|||
projectUserList: [],
|
||||
});
|
||||
|
||||
const fnWorkLevelChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_DEPARTMENT_ID = "";
|
||||
form.value.LEADER_USER_ID = [];
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_DEPARTMENT_ID = "";
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
data.approveUserList = [];
|
||||
form.value.APPROVE_DEPARTMENT_ID = "";
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
data.monitorUserList = [];
|
||||
form.value.MONITOR_DEPARTMENT_ID = "";
|
||||
form.value.MONITOR_USER_ID = [];
|
||||
data.projectUserList = [];
|
||||
form.value.PROJECT_MANAGER_DEPARTMENT_ID = "";
|
||||
form.value.PROJECT_MANAGER_USER_ID = [];
|
||||
};
|
||||
|
||||
const fnLeaderDepartmentChange = () => {
|
||||
data.leaderUserList = [];
|
||||
form.value.LEADER_USER_ID = [];
|
||||
};
|
||||
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
|
|
@ -343,44 +322,17 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
await useFormValidate(formRef);
|
||||
// if (props.type === "add") {
|
||||
// fnHasLevel(form.WORK_LEVEL);
|
||||
// }
|
||||
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||
? form.LEADER_USER_ID.join(",")
|
||||
: "";
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||
? form.AUDIT_USER_ID.join(",")
|
||||
: "";
|
||||
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||
? form.APPROVE_USER_ID.join(",")
|
||||
: "";
|
||||
const MONITOR_USER_ID = form.MONITOR_USER_ID
|
||||
? form.MONITOR_USER_ID.join(",")
|
||||
: "";
|
||||
const PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID
|
||||
? form.PROJECT_MANAGER_USER_ID.join(",")
|
||||
: "";
|
||||
const params = {
|
||||
...form,
|
||||
LEADER_USER_ID,
|
||||
AUDIT_USER_ID,
|
||||
APPROVE_USER_ID,
|
||||
MONITOR_USER_ID,
|
||||
PROJECT_MANAGER_USER_ID,
|
||||
};
|
||||
form.LEADER_USER_ID = form.LEADER_USER_ID.join(",");
|
||||
form.AUDIT_USER_ID = form.AUDIT_USER_ID.join(",");
|
||||
form.APPROVE_USER_ID = form.APPROVE_USER_ID.join(",");
|
||||
form.MONITOR_USER_ID = form.MONITOR_USER_ID.join(",");
|
||||
form.PROJECT_MANAGER_USER_ID = form.PROJECT_MANAGER_USER_ID.join(",");
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel(form.WORK_LEVEL);
|
||||
if (!isCon) {
|
||||
await setHotConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setHotConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setHotConfigurationUserEdit(params);
|
||||
await setHotConfigurationUserEdit(form);
|
||||
}
|
||||
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
emits("get-data");
|
||||
|
|
@ -428,8 +380,6 @@ watchEffect(() => {
|
|||
if (form.value.PROJECT_MANAGER_DEPARTMENT_ID)
|
||||
fnGetProjectUser(form.value.PROJECT_MANAGER_DEPARTMENT_ID);
|
||||
});
|
||||
|
||||
watchEffect(() => {});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -171,15 +171,15 @@ const data = reactive({
|
|||
APPLY_DEPARTMENT_ID: "",
|
||||
WORK_LEVEL: "",
|
||||
LEADER_DEPARTMENT_ID: "",
|
||||
LEADER_USER_ID: [],
|
||||
LEADER_USER_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
APPROVE_DEPARTMENT_ID: "",
|
||||
APPROVE_USER_ID: [],
|
||||
APPROVE_USER_ID: "",
|
||||
MONITOR_DEPARTMENT_ID: "",
|
||||
MONITOR_USER_ID: [],
|
||||
MONITOR_USER_ID: "",
|
||||
PROJECT_MANAGER_DEPARTMENT_ID: "",
|
||||
PROJECT_MANAGER_USER_ID: [],
|
||||
PROJECT_MANAGER_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
|
|||
|
|
@ -34,28 +34,24 @@
|
|||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" @click="fnGetDataTransfer"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button @click="reset"> 重置 </el-button>
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnGetDataTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
:show-pagination="false"
|
||||
show-summary
|
||||
:summary-method="fnGetSummaries"
|
||||
>
|
||||
<layout-table :data="list" :show-pagination="false">
|
||||
<el-table-column label="序号" width="70">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="NAME" label="部门" />
|
||||
|
||||
<el-table-column prop="LOGIN_RATE" label="登录率" />
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
|
|
@ -66,10 +62,10 @@
|
|||
import LayoutDepartment from "@/components/department/index.vue";
|
||||
import { serialNumber } from "@/assets/js/utils.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { getFhlogStatsList } from "@/request/statistical_analysis.js";
|
||||
import { sumBy } from "lodash-es";
|
||||
import dayjs from "dayjs";
|
||||
import { onMounted } from "vue";
|
||||
import {
|
||||
getFhlogStatsList,
|
||||
getDetectionSituationListTime,
|
||||
} from "@/request/statistical_analysis.js";
|
||||
|
||||
const handleExtraData = (dataList) => {
|
||||
dataList.forEach((item) => {
|
||||
|
|
@ -85,11 +81,6 @@ const { list, searchForm, pagination, fnGetData } = useListData(
|
|||
usePagination: false,
|
||||
}
|
||||
);
|
||||
|
||||
onMounted(() => {
|
||||
reset();
|
||||
});
|
||||
|
||||
const fnGetDataTransfer = () => {
|
||||
fnGetData({
|
||||
START_TIME: searchForm.value.dates?.[0],
|
||||
|
|
@ -97,48 +88,13 @@ const fnGetDataTransfer = () => {
|
|||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
|
||||
const reset = () => {
|
||||
searchForm.value.dates = [
|
||||
dayjs().startOf("year").format("YYYY-MM-DD"),
|
||||
dayjs().format("YYYY-MM-DD"),
|
||||
];
|
||||
searchForm.value.DEPTIDS = [];
|
||||
const fnInit = async () => {
|
||||
const resData = await getDetectionSituationListTime();
|
||||
searchForm.value.dates = [resData.pd.MINTIME, resData.pd.MAXTIME];
|
||||
fnGetDataTransfer();
|
||||
};
|
||||
const fnGetSummaries = ({ columns, data }) => {
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = "合计";
|
||||
return;
|
||||
}
|
||||
|
||||
const property = column.property;
|
||||
if (property === "NAME") {
|
||||
sums[index] = "--"; // 不显示合计
|
||||
} else {
|
||||
// 特殊处理“排查率”
|
||||
const totalReal = sumBy(data, (item) => {
|
||||
const val = item.LOGIN_COUNTS;
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
const totalNeed = sumBy(data, (item) => {
|
||||
const val = item.WORKER_COUNTS;
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
|
||||
if (totalNeed > 0) {
|
||||
const rate = (totalReal / totalNeed) * 100;
|
||||
sums[index] = `${rate.toFixed(2)}%`;
|
||||
} else {
|
||||
sums[index] = "0.00%";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return sums;
|
||||
};
|
||||
fnInit();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -209,8 +209,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
entrance === 'archive' &&
|
||||
row.STEP_ID !== -1
|
||||
"
|
||||
type="danger"
|
||||
text
|
||||
|
|
@ -231,7 +231,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<layout-video
|
||||
v-model:visible="data.videoDialog.visible"
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
label="断路所在单位消防、安全管理部门负责人"
|
||||
prop="LEADER_USER_ID"
|
||||
>
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.LEADER_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.safetyUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -51,7 +51,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分厂负责人" prop="AUDIT_USER_ID">
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -108,18 +108,23 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async () => {
|
||||
const resData = await getCutRoadVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
return ElMessage.error("该申请单位已存在");
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getCutRoadVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
callback(new Error("该申请部门已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
const rules = {
|
||||
APPLY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
|
||||
AUDIT_DEPARTMENT_ID: [
|
||||
|
|
@ -155,12 +160,12 @@ const data = reactive({
|
|||
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
form.value.AUDIT_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnSafetyDepartmentChange = () => {
|
||||
data.safetyUserList = [];
|
||||
form.value.LEADER_USER_ID = [];
|
||||
form.value.LEADER_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
|
|
@ -173,28 +178,11 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
|
||||
await useFormValidate(formRef);
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||
? form.AUDIT_USER_ID.join(",")
|
||||
: "";
|
||||
const LEADER_USER_ID = form.LEADER_USER_ID
|
||||
? form.LEADER_USER_ID.join(",")
|
||||
: "";
|
||||
const params = {
|
||||
...form,
|
||||
AUDIT_USER_ID,
|
||||
LEADER_USER_ID,
|
||||
};
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel();
|
||||
if (!isCon) {
|
||||
await setCutRoadConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setCutRoadConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setCutRoadConfigurationUserEdit(params);
|
||||
await setCutRoadConfigurationUserEdit(form);
|
||||
}
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
|
|
@ -225,7 +213,6 @@ watchEffect(() => {
|
|||
if (form.value.LEADER_DEPARTMENT_ID)
|
||||
fnGetSafetyUser(form.value.LEADER_DEPARTMENT_ID);
|
||||
});
|
||||
watchEffect(() => {});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ import {
|
|||
getCutRoadConfigurationUserView,
|
||||
setCutRoadConfigurationUserDelete,
|
||||
setCutRoadConfigurationUserDeleteAll,
|
||||
setCutRoadConfigurationUserList,
|
||||
setCutRoadConfigurationUserList
|
||||
} from "@/request/eight_work.js";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
|
||||
|
|
@ -137,13 +137,15 @@ const data = reactive({
|
|||
CONFIGURATION_ID: "",
|
||||
APPLY_DEPARTMENT_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
LEADER_DEPARTMENT_ID: "",
|
||||
LEADER_USER_ID: [],
|
||||
LEADER_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
|
||||
const handleDelete = async (CONFIGURATION_ID) => {
|
||||
await ElMessageBox.confirm("确定要删除吗?", {
|
||||
type: "warning",
|
||||
|
|
@ -190,8 +192,6 @@ const fnGoEdit = async (id) => {
|
|||
const resData = await getCutRoadConfigurationUserView({
|
||||
CONFIGURATION_ID: id,
|
||||
});
|
||||
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||
resData.pd.LEADER_USER_ID = resData.pd.LEADER_USER_ID.toString().split(",");
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
type="date"
|
||||
@change="judgeExamineTime"
|
||||
@change="judgeExamineTime()"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
value-format="YYYY-MM-DD"
|
||||
format="YYYY-MM-DD"
|
||||
type="date"
|
||||
@change="judgeExamineTime"
|
||||
@change="judgeExamineTime()"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -172,11 +172,6 @@ const fnDisabledDate = (time) => {
|
|||
};
|
||||
const personnelManagementJobTypeList =
|
||||
await layoutFnGetPersonnelManagementJobType();
|
||||
|
||||
// 保存原始的复审时间值
|
||||
const originalReviewTime1 = ref("");
|
||||
const originalReviewTime2 = ref("");
|
||||
|
||||
// 特种作业证书编号 去除唯一校验
|
||||
// const fnHasCertificate = async (rule, value, callback) => {
|
||||
// if (value) {
|
||||
|
|
@ -281,9 +276,6 @@ const fnGetData = async () => {
|
|||
});
|
||||
await fnGetAllUserList(resData.pd.DEPARTMENT_ID);
|
||||
form.value = resData.pd;
|
||||
// 保存原始值
|
||||
originalReviewTime1.value = resData.pd.REVIEWTIME1 || "";
|
||||
originalReviewTime2.value = resData.pd.REVIEWTIME2 || "";
|
||||
await fnGetUserDetail();
|
||||
};
|
||||
fnGetData();
|
||||
|
|
@ -297,17 +289,6 @@ const fnSubmit = debounce(
|
|||
form.value.PTYPE === "公司员工" ? CORPINFO_ID : form.value.UNITS_ID,
|
||||
VALID_ETIME: form.value.VALID_ETIME,
|
||||
};
|
||||
|
||||
// 检查复审时间是否有变化,如果有变化则添加额外参数
|
||||
if (SPECIALOPERATIONS_ID) {
|
||||
if (form.value.REVIEWTIME1 !== originalReviewTime1.value) {
|
||||
params.REVIEWTIME1_CHANGED = "1";
|
||||
}
|
||||
if (form.value.REVIEWTIME2 !== originalReviewTime2.value) {
|
||||
params.REVIEWTIME2_CHANGED = "1";
|
||||
}
|
||||
}
|
||||
|
||||
!SPECIALOPERATIONS_ID
|
||||
? await setPersonnelManagementAdd(params)
|
||||
: await setPersonnelManagementEdit(params);
|
||||
|
|
|
|||
|
|
@ -1,27 +1,6 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" :title="title" :before-close="fnClose">
|
||||
<el-form label-width="110px">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="总实际取证人数">
|
||||
<el-input v-model="dataList.total.TOTAL" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="总应取证人数">
|
||||
<el-input
|
||||
v-model.number="dataList.total.fnumber"
|
||||
placeholder="请输入总应取证人数"
|
||||
@blur="handleBlurTotal(dataList.total)"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="总取证率">
|
||||
<el-input :value="calculateRateTotal(dataList.total)" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-for="(item, index) in dataList.varList" :key="index">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="证书类型">
|
||||
|
|
@ -87,14 +66,6 @@ const calculateRate = (item) => {
|
|||
return ((fnumber / numbers) * 100).toFixed(2) + "%";
|
||||
};
|
||||
|
||||
const calculateRateTotal = (item) => {
|
||||
const fnumber = Number(item.fnumber) || 0;
|
||||
const numbers = Number(item.TOTAL) || 0;
|
||||
|
||||
if (fnumber === 0) return "0.00%";
|
||||
return ((fnumber / numbers) * 100).toFixed(2) + "%";
|
||||
};
|
||||
|
||||
const handleBlur = (item) => {
|
||||
// 确保输入值不为空且为数字
|
||||
const value = Number(item.fnumber) || 0;
|
||||
|
|
@ -107,18 +78,6 @@ const handleBlur = (item) => {
|
|||
}
|
||||
};
|
||||
|
||||
const handleBlurTotal = (item) => {
|
||||
// 确保输入值不为空且为数字
|
||||
const value = Number(item.fnumber) || 0;
|
||||
const maxValue = Number(item.TOTAL) || 0;
|
||||
|
||||
if (value > maxValue) {
|
||||
// 超过最大值时自动修正
|
||||
item.fnumber = maxValue;
|
||||
ElMessage.warning(`输入值不能超过 ${maxValue}`);
|
||||
}
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
// 清空 dataList 中的 fnumber 字段
|
||||
if (dataList.value && dataList.value.varList) {
|
||||
|
|
|
|||
|
|
@ -209,15 +209,14 @@ const fnExportTemplates = async () => {
|
|||
}/specialoperations/excelAll`;
|
||||
};
|
||||
// 使用 ref 包装数据使其具有响应性
|
||||
const dataList = ref({ varList: [], total: 0 });
|
||||
const dataList = ref({ varList: [] });
|
||||
|
||||
getForeNsicStatisticsList().then((data) => {
|
||||
if (data && data.varList) {
|
||||
data.varList.forEach((item) => {
|
||||
item.fnumber = 0;
|
||||
});
|
||||
dataList.value.varList = data.varList;
|
||||
dataList.value.total = data.total;
|
||||
dataList.value = data;
|
||||
}
|
||||
});
|
||||
const fnSubmitImport = async (formData) => {
|
||||
|
|
|
|||
|
|
@ -34,20 +34,17 @@
|
|||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" @click="search">搜索</el-button>
|
||||
<el-button @click="fnGetDataTransfer"> 重置 </el-button>
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnGetDataTransfer">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
:show-pagination="false"
|
||||
show-summary
|
||||
:summary-method="fnGetSummaries"
|
||||
>
|
||||
<layout-table :data="list" :show-pagination="false">
|
||||
<el-table-column label="序号" width="70">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
|
|
@ -55,13 +52,9 @@
|
|||
</el-table-column>
|
||||
<el-table-column prop="DEPARTMENT_NAME" label="部门" />
|
||||
<el-table-column prop="TOTAL_COUNT" label="清单数量" />
|
||||
<el-table-column prop="NEED_COUNT" label="应排查次数" />
|
||||
<el-table-column prop="REAL_COUNT" label="已排查次数" />
|
||||
<el-table-column prop="CHECK_RATE" label="排查率">
|
||||
<template #default="{ row }">
|
||||
{{ row.CHECK_RATE + "%" }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="TOTAL_CODE_num" label="待排查清单数量" />
|
||||
<el-table-column prop="ALREADY_CHECK_COUNT" label="己排查清单数量" />
|
||||
<el-table-column prop="CHECK_RATE" label="排查率" />
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
|
|
@ -75,19 +68,11 @@ import {
|
|||
getListmanagerDeptList,
|
||||
getDetectionSituationListTime,
|
||||
} from "@/request/statistical_analysis.js";
|
||||
import dayjs from "dayjs";
|
||||
import { sumBy } from "lodash-es";
|
||||
|
||||
const handleExtraData = (dataList) => {
|
||||
dataList.forEach((item) => {
|
||||
if (item.NEED_COUNT && item.REAL_COUNT) {
|
||||
item.CHECK_RATE = (
|
||||
(Number(item.REAL_COUNT) / Number(item.NEED_COUNT)) *
|
||||
100
|
||||
).toFixed(2);
|
||||
} else {
|
||||
item.CHECK_RATE = "0.00";
|
||||
}
|
||||
item.TOTAL_CODE_num = item.TOTAL_COUNT - item.ALREADY_CHECK_COUNT;
|
||||
item.CHECK_RATE = item.CHECK_RATE.toFixed(2) + "%";
|
||||
});
|
||||
};
|
||||
|
||||
|
|
@ -99,78 +84,13 @@ const { list, searchForm, pagination, fnGetData } = useListData(
|
|||
usePagination: false,
|
||||
}
|
||||
);
|
||||
|
||||
const fnGetDataTransfer = () => {
|
||||
searchForm.value.dates = [
|
||||
dayjs().startOf("year").format("YYYY-MM-DD"),
|
||||
dayjs().format("YYYY-MM-DD"),
|
||||
];
|
||||
searchForm.value.DEPTIDS = [];
|
||||
fnGetData({
|
||||
START_TIME: searchForm.value.dates?.[0],
|
||||
END_TIME: searchForm.value.dates?.[1],
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
|
||||
const fnGetSummaries = ({ columns, data }) => {
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = "合计";
|
||||
return;
|
||||
}
|
||||
|
||||
const property = column.property;
|
||||
|
||||
// 对于需要求和的字段(数值型)
|
||||
if (
|
||||
property === "REAL_COUNT" ||
|
||||
property === "NEED_COUNT" ||
|
||||
property === "TOTAL_COUNT"
|
||||
) {
|
||||
const total = sumBy(data, (item) => {
|
||||
const val = item[property];
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
|
||||
// 显示 0 或 --(仅当所有值都为 NaN 时才显示 --)
|
||||
sums[index] = total === 0 ? "0" : total.toString();
|
||||
}
|
||||
// 对于“排查率”列,单独处理
|
||||
else if (property === "DEPARTMENT_NAME") {
|
||||
sums[index] = "--"; // 不显示合计
|
||||
} else {
|
||||
// 特殊处理“排查率”
|
||||
const totalReal = sumBy(data, (item) => {
|
||||
const val = item.REAL_COUNT;
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
const totalNeed = sumBy(data, (item) => {
|
||||
const val = item.NEED_COUNT;
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
|
||||
if (totalNeed > 0) {
|
||||
const rate = (totalReal / totalNeed) * 100;
|
||||
sums[index] = `${rate.toFixed(2)}%`;
|
||||
} else {
|
||||
sums[index] = "0.00%";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return sums;
|
||||
};
|
||||
|
||||
const search = () => {
|
||||
fnGetData({
|
||||
START_TIME: searchForm.value.dates?.[0],
|
||||
END_TIME: searchForm.value.dates?.[1],
|
||||
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
|
||||
});
|
||||
};
|
||||
|
||||
const fnInit = async () => {
|
||||
const resData = await getDetectionSituationListTime();
|
||||
searchForm.value.dates = [resData.pd.MINTIME, resData.pd.MAXTIME];
|
||||
|
|
|
|||
|
|
@ -44,10 +44,10 @@
|
|||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" @click="fnGetDataTransfer"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button @click="reset"> 重置 </el-button>
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="findList = []">
|
||||
重置
|
||||
</el-button>
|
||||
<el-button
|
||||
@click="
|
||||
router.push({
|
||||
|
|
@ -121,9 +121,7 @@
|
|||
>安全隐患。
|
||||
</div>
|
||||
<div>
|
||||
截止{{ searchForm.dates[1] }}到期整改完成(验收合格)率<span
|
||||
class="text-red"
|
||||
>
|
||||
截止{{ searchForm.dates[1] }}到期整改完成率<span class="text-red">
|
||||
{{
|
||||
(
|
||||
(rectifyCountSummary.yzgCount /
|
||||
|
|
@ -265,42 +263,35 @@ const fnGetPercent = ({ columns, data }) => {
|
|||
return;
|
||||
}
|
||||
|
||||
// 第13列:整改率
|
||||
if (index === 13) {
|
||||
// 获取第4列(隐患数量)的总和
|
||||
const totalHiddenCount = sumBy(data, (item) => {
|
||||
// 第八列(索引为 7):第五列(索引为 4) / 第四列(索引为 3)
|
||||
if (index === 7) {
|
||||
const sum4 = sumBy(data, (item) => {
|
||||
const val = item[columns[4]?.property];
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
const sum3 = sumBy(data, (item) => {
|
||||
const val = item[columns[3]?.property];
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
|
||||
// 只计算“已验收数量”
|
||||
const totalYysCount = sumBy(data, (item) => {
|
||||
const yys = item[columns[6]?.property]; // 已验收数量
|
||||
return isNaN(yys) ? 0 : Number(yys);
|
||||
});
|
||||
|
||||
if (totalHiddenCount === 0) {
|
||||
if (sum3 === 0) {
|
||||
sums[index] = "0%";
|
||||
} else {
|
||||
const rate = (totalYysCount / totalHiddenCount) * 100;
|
||||
sums[index] = `${rate.toFixed(2)}%`;
|
||||
sums[index] = ((sum4 / sum3) * 100).toFixed(2) + "%";
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// 其他列:常规求和
|
||||
const allNaN = data.every((value) => isNaN(value[column.property]));
|
||||
if (allNaN) {
|
||||
// 其他列:常规求和逻辑
|
||||
if (!data.every((value) => isNaN(value[column.property]))) {
|
||||
sums[index] =
|
||||
sumBy(data, (item) => {
|
||||
return item[column.property];
|
||||
}) || "--";
|
||||
} else {
|
||||
sums[index] = "--";
|
||||
return;
|
||||
}
|
||||
|
||||
const total = sumBy(data, (item) => {
|
||||
const val = item[column.property];
|
||||
return isNaN(val) ? 0 : Number(val);
|
||||
});
|
||||
|
||||
sums[index] = total === 0 ? "0" : total.toString();
|
||||
});
|
||||
|
||||
return sums;
|
||||
|
|
@ -343,45 +334,21 @@ const resultListCorrect = ref([
|
|||
dataItem: "totalCount",
|
||||
dataName: "隐患数量",
|
||||
},
|
||||
{
|
||||
dataItem: "wzgCount",
|
||||
dataName: "未整改数量",
|
||||
},
|
||||
{
|
||||
dataItem: "yzgCount",
|
||||
dataName: "已整改数量",
|
||||
dataName: "整改数量",
|
||||
},
|
||||
{
|
||||
dataItem: "yysCount",
|
||||
dataName: "已验收数量",
|
||||
},
|
||||
{
|
||||
dataItem: "ygqCount",
|
||||
dataName: "已过期数量",
|
||||
},
|
||||
{
|
||||
dataItem: "dqrCount",
|
||||
dataName: "待确认数量",
|
||||
},
|
||||
{
|
||||
dataItem: "qrdhCount",
|
||||
dataName: "确认时打回数量",
|
||||
},
|
||||
{
|
||||
dataItem: "zgdhCount",
|
||||
dataName: "整改时打回数量",
|
||||
dataItem: "wzgCount",
|
||||
dataName: "未完成整改隐患数量",
|
||||
},
|
||||
{
|
||||
dataItem: "yqCount",
|
||||
dataName: "已延期整改数量",
|
||||
},
|
||||
{
|
||||
dataItem: "wzczgCount",
|
||||
dataName: "未完成整改情况数量",
|
||||
},
|
||||
{
|
||||
dataItem: "rectificationRate",
|
||||
dataName: "整改率(验收合格)",
|
||||
dataName: "整改率",
|
||||
},
|
||||
]);
|
||||
const resultListAccept = ref([
|
||||
|
|
@ -468,27 +435,12 @@ onMounted(() => {
|
|||
fnGetDataTransfer();
|
||||
});
|
||||
|
||||
const reset = () => {
|
||||
const endDate = new Date();
|
||||
const startDate = new Date();
|
||||
startDate.setDate(endDate.getDate() - 7);
|
||||
|
||||
searchForm.value.dates = [
|
||||
startDate.toISOString().split("T")[0],
|
||||
endDate.toISOString().split("T")[0],
|
||||
];
|
||||
searchForm.value.HIDDEN_CLASSIFICATION = [];
|
||||
searchForm.value.checkedIds = [];
|
||||
// 调用数据获取方法
|
||||
fnGetDataTransfer();
|
||||
};
|
||||
|
||||
const fnGetDataTransfer = () => {
|
||||
fnGetData({
|
||||
STARTTIME: searchForm.value.dates[0],
|
||||
ENDTIME: searchForm.value.dates[1],
|
||||
HIDDEN_CLASSIFICATION: searchForm.value.HIDDEN_CLASSIFICATION?.join(","),
|
||||
checkedIds: searchForm.value.checkedIds?.join(","),
|
||||
HIDDEN_CLASSIFICATION: searchForm.value.HIDDEN_CLASSIFICATION.join(","),
|
||||
checkedIds: searchForm.value.checkedIds.join(","),
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -192,11 +192,7 @@
|
|||
审批表详情
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="
|
||||
userStore.getUserInfo.ISMAIN === '1' &&
|
||||
row.STEP_ID !== -1 &&
|
||||
row.STEP_ID !== 0
|
||||
"
|
||||
v-if="userStore.getUserInfo.ISMAIN === '1'"
|
||||
type="danger"
|
||||
text
|
||||
link
|
||||
|
|
@ -216,7 +212,7 @@
|
|||
<check-list
|
||||
v-if="data.checkListDialog.visible"
|
||||
v-model:visible="data.checkListDialog.visible"
|
||||
v-model:foreignKey="data.checkListDialog.FOREIGN_KEY"
|
||||
v-model:foreign-key="data.checkListDialog.FOREIGN_KEY"
|
||||
/>
|
||||
<layout-video
|
||||
v-model:visible="data.videoDialog.visible"
|
||||
|
|
@ -240,8 +236,7 @@ import {
|
|||
getTemporaryElectricityUsageFlow,
|
||||
getTaskSetps,
|
||||
getTemporaryElectricityUsageList,
|
||||
setEightWorkInvalid,
|
||||
getApplyDept,
|
||||
setEightWorkInvalid, getApplyDept
|
||||
} from "@/request/eight_work.js";
|
||||
import LayoutVideo from "@/components/video/index.vue";
|
||||
import CheckList from "@/components/safety_briefing_checklist/index.vue";
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="用电单位负责人" prop="AUDIT_USER_ID">
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.AUDIT_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.auditUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="配送电单位负责人" prop="APPROVE_USER_ID">
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable multiple>
|
||||
<el-select v-model="form.APPROVE_USER_ID" filterable>
|
||||
<el-option
|
||||
v-for="item in data.safetyUserList"
|
||||
:key="item.USER_ID"
|
||||
|
|
@ -102,18 +102,23 @@ const props = defineProps({
|
|||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
|
||||
const fnHasLevel = async () => {
|
||||
const resData = await getElectricityVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
return ElMessage.error("该申请部门已存在");
|
||||
const fnHasLevel = async (rule, value, callback) => {
|
||||
if (value) {
|
||||
const resData = await getElectricityVerifyConfigurationUser({
|
||||
APPLY_DEPARTMENT_ID: form.value.APPLY_DEPARTMENT_ID,
|
||||
});
|
||||
if (resData?.pd?.APPLY_DEPARTMENT_ID)
|
||||
callback(new Error("该申请部门已存在"));
|
||||
else callback();
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
|
||||
const rules = {
|
||||
APPLY_DEPARTMENT_ID: [
|
||||
{ required: true, message: "请选择申请部门", trigger: "change" },
|
||||
// { validator: fnHasLevel, trigger: "blur" },
|
||||
{ validator: fnHasLevel, trigger: "blur" },
|
||||
],
|
||||
|
||||
AUDIT_DEPARTMENT_ID: [
|
||||
|
|
@ -149,12 +154,12 @@ const data = reactive({
|
|||
|
||||
const fnAuditDepartmentChange = () => {
|
||||
data.auditUserList = [];
|
||||
form.value.AUDIT_USER_ID = [];
|
||||
form.value.AUDIT_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnSafetyDepartmentChange = () => {
|
||||
data.safetyUserList = [];
|
||||
form.value.APPROVE_USER_ID = [];
|
||||
form.value.APPROVE_USER_ID = "";
|
||||
};
|
||||
|
||||
const fnClose = () => {
|
||||
|
|
@ -167,27 +172,11 @@ const fnSubmit = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
const form = props.form;
|
||||
await useFormValidate(formRef);
|
||||
const AUDIT_USER_ID = form.AUDIT_USER_ID
|
||||
? form.AUDIT_USER_ID.join(",")
|
||||
: "";
|
||||
const APPROVE_USER_ID = form.APPROVE_USER_ID
|
||||
? form.APPROVE_USER_ID.join(",")
|
||||
: "";
|
||||
const params = {
|
||||
...form,
|
||||
AUDIT_USER_ID,
|
||||
APPROVE_USER_ID,
|
||||
};
|
||||
if (props.type === "add") {
|
||||
const isCon = await fnHasLevel();
|
||||
if (!isCon) {
|
||||
await setElectricityConfigurationUserAdd(params);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
await useFormValidate(formRef);
|
||||
await setElectricityConfigurationUserAdd(form);
|
||||
} else {
|
||||
await setElectricityConfigurationUserEdit(params);
|
||||
await setElectricityConfigurationUserEdit(form);
|
||||
}
|
||||
ElMessage.success("提交成功");
|
||||
fnClose();
|
||||
|
|
@ -218,7 +207,6 @@ watchEffect(() => {
|
|||
if (form.value.APPROVE_DEPARTMENT_ID)
|
||||
fnGetSafetyUser(form.value.APPROVE_DEPARTMENT_ID);
|
||||
});
|
||||
watchEffect(() => {});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
|||
|
|
@ -138,9 +138,9 @@ const data = reactive({
|
|||
CONFIGURATION_ID: "",
|
||||
APPLY_DEPARTMENT_ID: "",
|
||||
AUDIT_DEPARTMENT_ID: "",
|
||||
AUDIT_USER_ID: [],
|
||||
AUDIT_USER_ID: "",
|
||||
APPROVE_DEPARTMENT_ID: "",
|
||||
APPROVE_USER_ID: [],
|
||||
APPROVE_USER_ID: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
|
@ -190,8 +190,6 @@ const fnGoEdit = async (id) => {
|
|||
const resData = await getElectricityConfigurationUserView({
|
||||
CONFIGURATION_ID: id,
|
||||
});
|
||||
resData.pd.AUDIT_USER_ID = resData.pd.AUDIT_USER_ID.toString().split(",");
|
||||
resData.pd.APPROVE_USER_ID = resData.pd.APPROVE_USER_ID.toString().split(",");
|
||||
data.editDialog.form = resData.pd;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -209,16 +209,6 @@ const fnPreviewVideo = async (row) => {
|
|||
} catch (error) {
|
||||
ElMessage.error("启动转码失败: " + (error.message || "未知错误"));
|
||||
}
|
||||
|
||||
// try {
|
||||
// // 直接打开播放器弹窗,使用大华SDK的预览接口
|
||||
// data.transcodeVideoDialog.visible = true;
|
||||
// // 构造大华SDK预览URL,通道号从row.PLS_ID获取
|
||||
// data.transcodeVideoDialog.src = `/api/video/start-preview?channel=${row.PLS_ID || 0}`;
|
||||
// data.transcodeVideoDialog.id = row.PLS_ID;
|
||||
// } catch (error) {
|
||||
// ElMessage.error("播放视频失败: " + (error.message || "未知错误"));
|
||||
// }
|
||||
};
|
||||
|
||||
const fnDeleteVideo = async (row) => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue